首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >性能测试DB监控MySQL常见的监控指标项目

性能测试DB监控MySQL常见的监控指标项目

原创
作者头像
漫谈测试
发布2025-01-22 15:20:00
发布2025-01-22 15:20:00
38400
代码可运行
举报
文章被收录于专栏:漫谈测试漫谈测试
运行总次数:0
代码可运行

性能测试监控数据库,我们可以使用官方提供的MySQL客户端进行监控,也可以通过命令或者SQL来完成监控任务。

MySQL数据库监控工具,可以使用商业工具SQLyog的MySQL客户端,通过GUI方式来管理MySQL。也可以使用另外款商业工具Navicat作为UI来管理MySQL数据库,Navicat Monitor 提供慢查询分析,top线程分析,思索分析等功能。

不管使用商业工具还是直接使用SQL及其它监控命令来监控MySQL,最重要的是需要知道监控哪些指标?这些指标代表什么意思?

MySQL常见的监控项目

一、查询缓存

SQL:show variables like '%Query_cache%'';

二、Qcache_free_blocks 

如果Qcache_free_blocks大致等于Qcache_total_blocks/2,则说明碎片非常严重。

如果Qcache_lowmem_prunes的值正在增加,并且有大量的自由块,这意味着碎片导致查询正在被从缓存中永久删除。

三、缓存碎片率

缓存碎片率=Qcache_free_blocks/Qcache_total_blocks*100%

如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片。

四、缓存利用率

缓存利用率=(query_cache_size-Qcachefree_memory)/query_cache size*100%。

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

五、thread cache_ size

SQL:show variables like 'thread%';

缓存在 Cache 中的线程数量

六、DB 已连接线程数

SOL:show status like "Connectioas';

七、当前连接线程状态

SQL:show status like "%thread%%';

八、索引缓存大小

SQL:show variables like "key_bufer _ size';

九、连接缓存命中率 Threads_Cache_Hit

Threads_Cache_Hit=(Connections-Threads_created)/Connections"100%

建议 90%左右甚至更高

十、索引缓存未命中率key_cache_miss_rate

key_cache_miss_rate= Key _reads / Key_reed_requests * 100%

1%即每100个索引中有1个在缓存中找不到,要直接从硬盘读取

SQL:show global status like 'key_read%';

建议<0.1%

十一、索引缓存命中率

key_bufier_read_hits=(1-Key_reads/Key_read_requests)*100%

key_buffer_write_hits=(1-Key_wites/Key_write_reguests)*100%

当然是越大越好。SQL:show global status like'key_%'d;

十二、索引读取统计 key_blocks

Key_blocks_umused 表示未使用的缓存簇(blocks)数,Key_blocks_used 表示曾经用到的最大的 blocks数,如果缓存都用到了,要么增加key_buffer_size、要么就是过度索引了,把缓存占满了。

比较理想的设置:

Key_blocks_used/(Key_blocks_unused+Key_blocks_used)*100%

≈80%

SQL:show global status like "key_blocks_u%'

十三、并发连接数

max_connections:允许的最大连接数,一般来说值在500~800是比较合适的,SQL:show variables like 'max _connections’;

Max_used_connections:服务器响应的最大连接数

SQL:show global status like "Max_used_connections’;

Max_used_connections/max_connections<=85%

Connections:当前连接数

SQL:show global stafus like *Connections';

max_user_connections:每个用户允许的最大连接数;

是针对单个用户的连接限制,不常用。

badklog:类似于线程队列,当无法响应请求时,就让线程排队,这个值就是队列长度。

SQL:show variables like "back_log'越小越好。

max_connect_error:默认值为10,如果受信账号错误连接次数达到10,则自动堵塞,需要 fush hosts 来解除。

十四、临时表 Tmp table

SQL:show global status like 'created_tmp%',临时表比较大无法在内存中完成时就不得不使用磁盘文件。如果Createdtmp_tables非常大,则可能是系统中排序操作过多,或者是表连接方式不是很优化。如果 Created_tmp_disk_tables与Created_tmp_tables 的占比过高,如超过10%,则需要考虑 tmp_table_size这个系统参数是否设置得足够大。当然,如果系统内存有限,也就没有太好的解决办法了。

十五、MySQL 服务器对临时表的配置

代码语言:javascript
代码运行次数:0
运行
复制
SQL:show variables where Variable_name in ('tmp_table_size','max_heap _tablesize');

当临时表空间小于 max_heap_table_size时,才能全放入内存。

十六、表扫描情况

SQL:show global status like "handler_read%';

show global status like 'com select';

表扫描率=Handler_read_rnd_next/Com_select

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

阅读后若有收获,不吝关注,分享,在看等操作!!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、查询缓存
  • 二、Qcache_free_blocks 
  • 三、缓存碎片率
  • 四、缓存利用率
  • 五、thread cache_ size
  • 六、DB 已连接线程数
  • 七、当前连接线程状态
  • 八、索引缓存大小
  • 九、连接缓存命中率 Threads_Cache_Hit
  • 十、索引缓存未命中率key_cache_miss_rate
  • 十一、索引缓存命中率
  • 十二、索引读取统计 key_blocks
  • 十三、并发连接数
  • 十四、临时表 Tmp table
  • 十五、MySQL 服务器对临时表的配置
  • 十六、表扫描情况
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档