MySQL数据库调优

guiyun affiliate

# 忽略表名大小写(my.conf配置)


#查看MySQL服务器配置信息


#查看MySQL服务器运行的各种状态值


1.连接数

#设置的最大连接数是3200,而响应的连接数是 455

2.进程数

如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
Threads_created #表示创建过的线程数,如果发现Threads_created值过大的话,表明 MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器 thread_cache_size配置

3.MySQL慢查询

配置中启用了记录慢查询,超过2秒即为慢查询,一共有4986717条慢查询

4. key_buffer_size 
key_buffer_size是对MyISAM表性能影响最大的一个参数, 不过数据库中多为Innodb

一共有13891284810个索引读取请求,有39160965个请求在内存中没有找到直接从硬盘读取索引,
计算索引未命中缓存的概率:

样例值等于0.28% 需要适当加大key_buffer_size

5.临时表

Created_tmp_files #表示MySQL服务创建的临时文件文件数
每次创建临时表,Created_tmp_tables增加,
如果是在磁盘上创建临时表,Created_tmp_disk_tables也增加,


6.open table 的情况

Open_tables #表示打开表的数量,
Opened_tables #表示打开过的表数量,
如果Opened_tables数量过大,说明配置中table_open_cache值可能太小



7.查询缓存

字段解析:
query_cache_limit #超过此大小的查询将不缓存
query_cache_min_res_unit #缓存块的最小大小,默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据查询,就容易造成内存碎片和浪费。
query_cache_siz #查询缓存大小
query_cache_type #缓存类型,决定缓存什么样的查询,示例中表示不缓存 select sql_no_cache 查询
query_cache_wlock_invalidate #当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返回cache结果还是等写操作完成再读表获取结果。


字段解析:
Qcache_free_blocks #缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。
Qcache_free_memory #缓存中的空闲内存。
Qcache_hits #每次查询在缓存中命中时就增大
Qcache_inserts #每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。
Qcache_lowmem_prune #缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks和free_memory可以告诉您属于哪种情况)
Qcache_not_cached #不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
Qcache_queries_in_cache #当前缓存的查询(和响应)的数量。
Qcache_total_blocks #缓存中块的数量。


如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。


查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。



示例服务器,查询缓存碎片率 = 14.69%, 查询缓存利用率 = 59.12%, 查询缓存命中率 = 28.65%

8.锁表情况

Table_locks_immediate #表示立即释放表锁数
Table_locks_waited #表示需要等待的表锁数
如果 Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因为InnoDB是行锁而MyISAM是表锁,对于高并发写入的应用InnoDB效果会好些.

9.文件打开数(open_files)



10.表扫描情况


如果表扫描率超过4000,说明进行了太多表扫描,很有可能索引没有建好,增加read_buffer_size值会有一些好处,但最好不要超过8MB.

参考文章:https://www.linuxhub.org/?p=3545

guiyun affiliate

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:苹果Mac OSX镜像下载大全
下一篇:Nginx: [emerg] could not build the server_names_hash出错解决

相关推荐

4

发表评论