如果我们建中大型的网站,最好使用服务器来建网站。很多使用服务器建网站的站长都会遇到这样的问题:自己服务器安装的宝塔面板的内存使用率很高,有时达到90%-100%。
今天查看自己服务器的mysql状态发现锁表次数非常高,
锁表次数:653,所以就试着搜索了下,发现别人动不动都是几十万次的锁表次数
下面是网上别人的锁表次数,达到了40万次,
启动时间
2018/10/23 05:50:49
每秒查询
110
总连接次数
2187956
每秒事务
0
发送
9.22 GB
File
OFF
接收
8.05 GB
Position
OFF
活动/峰值连接数
1/424
若值过大,增加max_connections
线程缓存命中率
99.96%
若过低,增加thread_cache_size
索引命中率
99.96%
若过低,增加key_buffer_size
Innodb索引命中率
98.19%
若过低,增加innodb_buffer_pool_size
查询缓存命中率
OFF
若过低,增加query_cache_size
创建临时表到磁盘
0.00%
若过大,尝试增加tmp_table_size
已打开的表
519
若过大,增加table_cache_size
没有使用索引的量
0
若不为0,请检查数据表的索引是否合理
没有索引的JOIN量
0
若不为0,请检查数据表的索引是否合理
排序后的合并次数
0
若值过大,增加sort_buffer_size
锁表次数
405311
若值过大,请考虑增加您的数据库性能
现在自己服务器的锁表次数还可以,不是很高。
如果mysql状态发现锁表次数真的很高,可以尝试开启redis/memcached/mongo缓存,或者文件缓存
其实可以根据负载状态来判断,锁表次数过高的话,负载会打满。如果cpu跟内存都正常,单单锁表次数高,一般问题不大。
mysql的最大连接数默认是100, 最大可以达到16384。
1、查看最大连接数:
SHOW VARIABLES LIKE '%max_connections%';
2、修改最大连接数
方法一:修改配置文件。
进入MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections 修改为 max_connections=1000 服务里重起MySQL即可。
方法二:命令行修改。
命令行登录MySQL后。设置新的MySQL最大连接数为200:
这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。