python - django 中使用原生mysql进行查询 如何减少连接次数

量化分析 2018-08-12 08:36:44
代码如下:

from DBUtils.PooledDB import PooledDB

MYSQL_HOST = settings.MYSQL_HOST
USER = settings.MYSQL_USER
PASSWORD = settings.MYSQL_PASSWD
DB =settings.MYSQL_DBNAME
PORT = settings.MYSQL_PORT

pool = PooledDB(pymysql, mincached =50,maxcached=100, maxconnections=100,host=MYSQL_HOST, user=USER, passwd=PASSWORD, db=DB, port=PORT,charset='utf8') # 5为连接池里的最少连接数


def myview(request):

# 在myview函数中执行查询,每次用户请求一次就进行查询一次

cmd = "SELECT DISTINCT t.cidno,t.fname, t.region, t.case_time, t.case_no, t.court, t.basis_no, t.detail, t.fullfil, t.publish_time FROM dw_person_dishonest t where t.fname='{0}' and CONCAT(LEFT(t.cidno, 4),RIGHT(t.cidno, 4))= '{1}'".format(
name, idnum_cat)


cursor.execute(cmd)
ret = cursor.fetchmany()





使用了mysql的连接池,可是如果并发数量大的话,还是比较慢,请问有什么办法可以提升连接性能?
...全文
319 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
https://blog.csdn.net/qq_37049050/article/details/85131514 django 已经支持长连接了 这是官方文档提供的方法 希望可以帮助你
tianfang 2018-08-13
  • 打赏
  • 举报
回复
1楼我没有回答到点上

楼主已经是单独的数据库连接池了,那么性能就不是卡在连接池上。需要提高数据库性能:
1 数据库读写分离,增加数据库数量,提高性能
2 数据库服务器优化,如:增加内存,升级SSD等手段硬件手段,增加索引,配置参数,等软件方法
3 优化数据结构和查询设计,采用增加中间表,内存表等手段



复杂的数据库查询比较消耗时间,是否可以采用中间表保存一些数据,,找专家级的DBA帮助调试
tianfang 2018-08-13
  • 打赏
  • 举报
回复
调整连接池数量

https://docs.djangoproject.com/en/2.0/ref/databases/#persistent-connections

https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-CONN_MAX_AGE

就是在setting.py的数据库配置连接中增加CONN_MAX_AGE ,有推荐设置为None,或者几十到数百,单位为秒。可以简单做给压力测试比较一下

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧