之前有人问过这个问题,“我如何计算 MySQL max_connections”,这就是答案:
max_connections =(可用 RAM - 全局缓冲区)/线程缓冲区
由于我没有足够的声誉来对现有问题添加评论,因此我不得不提出一个全新的问题。
我可以通过执行来获取缓冲区值:SHOW VARIABLES LIKE '%buffer%'
; 但是这个等式的可用 RAM 部分到底是什么?
这个值是以字节、千字节还是兆字节为单位的?还有别的吗?另外,我是在使用我的站点时使用资源监视器中显示的可用 RAM,还是我需要使用机器上安装的 RAM 总量?
我会说“可用内存”是指 mysql 可以申请的最大内存。而“全局缓冲区”意味着像
innodb_buffer_pool
,key_buffer_size
,query_cache_size
等缓冲区。此时,如果您有 SHOW GLOBAL VARIABLES,您可以使用 mysqlcalculator.com 帮助确定您的 RAM 占用量大约 2 分钟;列表可用。
默认值 151 是一个合理的起点。运行一段时间后,您可能会(但很可能不会)发现任何问题。如果您确实遇到问题,则可能需要调整几件事中的任何一件——包括表上的索引。
max_connections
很少需要调整。底线:不要为那个设置烦恼。