mysql每次查询结束是否需要close()它

在设计流程上,每个页面都要从多张数据表当中查询多个数据显示出来,对于访问量很小的网站来说数据库查询压力和负载基本不用太多考虑,但是如果访问量过大的话,就必须考虑这个问题了,目前我的疑问有这么几个方面:

  1. mysql数据库同时连接数量默认是限制多少,对于同时在线过万的连接请求,如何优化?

  2. mysql的执行语句结束后,是否必须执行关闭连接?

  3. 如果同时分别用多个function()查询多个数据表,每个function结束里面是不是也要添加close()语句?

阅读 9.3k
4 个回答

1.最大连接数是设置里max_connect_errors这一条的。
mysql同时读取的数据大小和内存有关
table_cache和索引的建立可以有一定的优化作用
2.不是必须要关,他会自动回收资源的。较大的系统要减少资源耗费的话,那就关掉吧。
3.每个线程都需要close

1 默认连接这个根据版本不同而不同,大到200-500,这个是用户最大连接数,还有个全局最大连接数。
2 优化概念太大了,这个根业务和引擎有关,硬件的话,大内存加固态必须的。

3 每次执行完是否关闭,看业务吧,如果长连接多,可以不用关,超时时间后会自动回收,默认八小时

  • 第一个问题:异步写/读缓存

  • 第二三个问题:建立一次连接的成本比较高,能复用尽量复用

要看你的应用是什么,如果是cli环境下单进程长时间运行worker类型人物,那么可以不关闭,节省反复连接数据库的时间。

web应用的话,每一次请求结束都会自动回收资源,也不必关闭。

只有多线程,长时间,高并发都满足的情况下才需要手动关闭,就像写c语言释放内存一样。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题