mysql性能排查

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-28 19:46   62   0

1.QPS(每秒Query量)

每秒查询量,多次查询diff
QPS = Questions(or Queries) / seconds
mysql > show global status like 'Question%';

2.TPS(每秒事务量)

TPS = (Com_commit + Com_rollback) / seconds
mysql > show global status like 'Com_commit';
mysql > show global status like 'Com_rollback';

3.key Buffer 命中率

对应my.cnf中Key_buffer_size参数设置

mysql>show global status like 'key%';
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%


4.InnoDB Buffer命中率

对应innodb_buffer_pool_size参数设置,主要针对InnoDB表性能影响最大的一个参数。功能与Key_buffer_size一样。InnoDB占用的内存,除innodb_buffer_pool_size用于存储页面缓存数据外,另外正常情况下还有大约8%的开销,主要用在每个缓存页帧的描述、adaptive hash等数据结构,一般设置为机器内存的80%

mysql> show status like 'innodb_buffer_pool_read%';
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

5.Query Cache命中率

query_cache_size: 主要用来缓存MySQL中的ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。当我们打开了 Query Cache功能,MySQL在接受到一条select语句的请求后,如果该语句满足Query Cache的要求(未显式说明不允许使用Query Cache,或者已经显式申明需要使用Query Cache),MySQL会直接根据预先设定好的HASH算法将接受到的select语句以字符串方式进行hash,然后到Query Cache中直接查找是否已经缓存。也就是说,如果已经在缓存中,该select请求就会直接将数据返回,从而省略了后面所有的步骤(如SQL语句的解析,优化器优化以及向存储引擎请求数据等),极大的提高性能

当然,Query Cache也有一个致命的缺陷,那就是当某个表的数据有任何任何变化,都会导致所有引用了该表的select语句在Query Cache中的缓存数据失效。所以,当我们的数据变化非常频繁的情况下,使用Query Cache可能会得不偿失

mysql> show status like 'Qcache%';
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;

例如

| Qcache_hits | 1892463 |

| Qcache_inserts | 35627

命中率98.17%=1892463/(1892463 +35627 )*100

6.Table Cache状态量

mysql> show global status like 'open%';

7.Thread Cache 命中率

mysql> show global status like 'Thread%';
mysql> show global status like 'Connections';
Thread_cache_hits = (1 - Threads_created / connections ) * 100%

8.锁定情况

mysql> show global status like '%lock%';
Table_locks_waited/Table_locks_immediate=0.3%

show open table from XXX(数据库名);//查看数据库哪些表正在使用In_use 以及锁定Name_locked

show global status like 'table_locks%';
Table_locks_immediate 发生表锁定操作, 但表锁定后马上释放
Table_locks_waited 发生表锁定, 并因此具有锁等待

9.主从延迟情况

mysql > show slave status

10.临时表情况

mysql > show status like 'Create_tmp%';
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超过10%,如果Created_tmp_tables值比较大,
可能是排序句子过多或者是连接句子不够优化

11.Innodb_log_waits

mysql > show status like 'innodb_log_waits';

12.慢查询情况

mysql> show global status like '%slow%';

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP