跳转至

性能指标

QPS (queries per seconds)

每秒钟查询数量

计算方法:queries / secondes 查询总数➗秒数

show global status like 'Question%';

TPS (Tranaction pre senconds)

每秒的事务数

计算方法:TPS = (Com_commit + Com_rollback) / seconds 提交次数 + 回滚次数 / 秒数

// 查看 Com_commit 和 Com_rollback 的命令
show global status like 'Com_commit';  
show global status like 'Com_rollback';

线程连接数

//  使用最大连接数
show global status like 'Max_used_connections';

//  线程连接数
show global status like 'Threads%';

//  设置的最大连接数
show variables like 'Max_connections';

Query Cache 查询缓存

  1. 查询缓存用于缓存select查询结果
  2. 当下接收到相同的查询请求时,不再执行实际查询处理而直接返回结果
  3. 适用于大量查询数据,很少改变查询结果

开启query cache

  • query_cache_size 设置为具体的大小,具体的大小是多少取决于查询的实际情况,但最好设置为 1024 的倍数,参考值 32M。当然这个大小是可以通过返回的性能测试进行调节,找到最适合的值。

  • 增加一行:query_cache_type=0 /1 / 2

  • 如果设置1,将会缓存所有的查询结果,除非你 select 语句使用 SQL_NO_CACHE 禁用了查询缓存

  • 如果设置2,则只缓存在 select 语句中通过 SQL_CACHE 指定需要缓存的查询

Cache 命中率

Query Cache 命中率计算 Query_cache_hits = (Query_hits/ (Query_hits + Qcache_inserts))* 100%;

// 查询Query Cache命中率
show status like 'Qcache%';

//  查看锁
show global status like '%lock';

Table_locks_waited/Table_locks_immediate // 值越大代表锁造成的阻塞越严重 Innodb_row_lock_waits innodb // 行锁,太大可能是间隙锁造成的

主从延时

//  查询主从延时的时间
show slave status;  // SHOW REPLICA STATUS;

mysql 慢查询

慢查询其实指的是查询比较慢的 sql 语句

  1. 执行速度超过定义时间的查询
  2. 不同的系统定义不同的慢查询指标

开启慢查询

开启慢查询:show_query_log = 1

慢查询日志路径:show_query_log_file=/data/mysql/show.log(路径是自己定义的,然后需要注意的是,启动mysql数据的用户,需要有写入的权限)

慢查询的时长:long_query_time = 1

设置下方数据,未使用索引的查询也被记录到慢查询的日志中,log_queries_not_using_indexes = 1

show variables like '%slow%';

使用 mysqldumpslow 生成

mysqldumpslow 命令

-s:是表示按照何种方式排序
-t:是top n的意思,即为返回前面多少条数据
-g:后边可以写一个正则匹配模式,大小写不敏感

mysqldumpslow -s 更多参数
c: 访问技术
l:  锁定时间
r:  返回数据

t: 查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均参数时间

得到返回记录集最多的10个sql

// 得到返回记录集最多的10个sql
mysqldumpslow -s -r -t 10 slow.log

// 得到访问次数最多的10个sql
mysqldumpslow -s c -t 10 slow.log

// 得到按时间顺序排序的前10条里面包含有左连接的查询语句
mysqldumpslow -s t -t 10 -g "left join" slow.log