Mysql性能优化(一) - 性能检测与瓶颈分析

概要:

MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。

| |目录

性能检测常用命令

show status

显示状态信息,参考:Mysql show status命令详解

show processlist

查看当前SQL执行,包括执行状态、是否锁表等,参考:Mysql show processlist命令详解

show variables

显示系统变量,参考:Mysql show variables命令详解

瓶颈分析常用命令

获取mysql用户下的进程总数

ps -ef | awk '{print $1}' | grep "mysql" | grep -v "grep" | wc -l

主机性能状态

# uptime 
13:05:52 up 53 days, 52 min, 1 user, load average: 0.00, 0.00, 0.00

CPU使用率

# top 或 # vmstat

磁盘IO量

# vmstat 或 # iostat

swap进出量[内存]

# free -m

数据库性能状态

QPS(每秒Query量)

QPS = Questions(or Queries) / seconds 

mysql > show /* global */ status like 'Question';

TPS(每秒事务量) 

TPS = (Com_commit + Com_rollback) / seconds 

mysql > show status like 'Com_commit'; 
mysql > show status like 'Com_rollback';

key Buffer 命中率

key_buffer_read_hits = (1-key_reads / key_read_requests) * 100% 
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%

mysql> show status like 'Key%';

InnoDB Buffer命中率

innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

mysql> show status like 'innodb_buffer_pool_read%';

Query Cache命中率

Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;

mysql> show status like 'Qcache%';

Table Cache状态量

mysql> show status like 'open%';

Thread Cache 命中率

Thread_cache_hits = (1 - Threads_created / connections ) * 100%

mysql> show status like 'Thread%';
mysql> show status like 'Connections';

锁定状态

mysql> show status like '%lock%';

复制延时量

mysql > show slave status

Tmp Table 状况(临时表状况)

mysql > show status like 'Create_tmp%';

Binlog Cache 使用状况 

mysql > show status like 'Binlog_cache%';

Innodb_log_waits 量

mysql > show status like 'innodb_log_waits';
评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消