Answers:
考虑每个数据库连接分配的内存量。必须分配什么东西?根据MySQL 5.0认证研究指南,第357页:
服务器为每个客户端连接维护多个缓冲区。一个用作与客户端交换信息的通信缓冲区。每个客户端维护其他缓冲区,以读取表以及执行联接和排序操作。
哪些设置控制每个连接的缓冲区?
建立连接后,需要花费一些时间来分配和释放这些缓冲区。不要忘记将这些值的总和乘以max_connections。附带说明一下,请不要使用mysql_pconnect,因为PHP和MySQL的持久连接关系不佳。这是有关此主题的两个信息链接:
在诸如OLTP之类的重读,重写环境中,这在RAM使用率和由于OS交换可能引起的抑制方面将是昂贵的。在低写,低读的网站上,我不会那么担心。
Mysql使用线程缓存(thread_cache_size)缓存连接(或线程)。最大值为100。当客户端关闭连接时,它将返回到缓存。当新连接打开时,它将检查线程缓存。在非常繁忙的系统上,打开关闭连接可能会变得昂贵,特别是如果您长时间运行查询。
https://dev.mysql.com/doc/refman/5.6/en/connection-threads.html 如果您负担得起Mysql Enterprise,则可以使用Mysql 5.6中实现的线程池插件。