mysql监控与调优_mysql学习笔记之监控与优化

# 11 监控与优化

## 11.1 监控指标

![](http://img.blog.itpub.net/blog/2020/03/27/6016ba60cf10d3ae.png?x-oss-process=style/bb)

### 11.1.1 QPS

```mysql

mysql> show global status like 'Com%';

mysql> show global status like 'Queries';

+---------------+---------+

| Variable_name | Value |

+---------------+---------+

| Queries | 1983766 |

+---------------+---------+

1 row in set (0.00 sec)

```

QPS = ( Queries 2- Queries 1 ) / 间隔时间

```mysql

mysql> show global status where variable_name in ('Queries','uptime');

+---------------+---------+

| Variable_name | Value |

+---------------+---------+

| Queries | 1983768 |

| Uptime | 1364443 |

+---------------+---------+

2 rows in set (0.00 sec)

```

### 11.1.2 TPS

```mysql

mysql> show global status where variable_name in ('com_insert','com_update','com_delete','uptime');

+---------------+---------+

| Variable_name | Value |

+---------------+---------+

| Com_delete | 23676 |

| Com_insert | 793072 |

| Com_update | 259586 |

| Uptime | 1364651 |

+---------------+---------+

4 rows in set (0.00 sec)

```

Transaction_sum= Com_delete+ Com_insert+ Com_update

TPS = (Transaction_sum 2 - Transaction_sum 1 ) / (time 2 - time 1)

### 11.1.3 并发数

```mysql

mysql> show global status like 'Threads_running';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| Threads_running | 2 |

+-----------------+-------+

1 row in set (0.01 sec)

```

### 11.1.4 连接数

```mysql

# 最大连接数

mysql> show global status like 'max_used_connections%';

+---------------------------+---------------------+

| Variable_name | Value |

+---------------------------+---------------------+

| Max_used_connections | 22 |

| Max_used_connections_time | 2019-09-04 13:49:52 |

+---------------------------+---------------------+

2 rows in set (0.00 sec)

# 当前连接数

mysql> show global status like 'threads_connected';

+-------------------+-------+

| Variable_name | Value |

+-------------------+-------+

| Threads_connected | 2 |

+-------------------+-------+

1 row in set (0.01 sec)

```

### 11.1.5 缓存命中率

```mysql

##从缓存中读取的次数

mysql> show global status like 'innodb_buffer_pool_read_requests';

+----------------------------------+----------+

| Variable_name | Value |

+----------------------------------+----------+

| Innodb_buffer_pool_read_requests | 16217299 |

+----------------------------------+----------+

1 row in set (0.00 sec)

##从物理磁盘读取的次数

mysql> show global status like 'innodb_buffer_pool_reads';

+--------------------------+-------+

| Variable_name | Value |

+--------------------------+-------+

| Innodb_buffer_pool_reads | 2067 |

+--------------------------+-------+

1 row in set (0.00 sec)

```

缓存命中率 = ( innodb_buffer_pool_read_requests - innodb_buffer_pool_reads ) /

innodb_buffer_pool_reads * 100%

### 11.1.6 服务可用性

1. 周期连接,执行查询:select @@version; 或 select user();

2. mysqladmin -uroot -pxxx -hxxxx ping

### 11.1.7 阻塞

```mysql

##< mysql 5.7

SELECT b.trx_mysql_thread_id as '被阻塞的线程',

b.trx_query as '被阻塞的SQL',

c.trx_mysql_thread_id as '阻塞线程',

c.trx_query as '阻塞SQL',

UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started)) as '阻塞时间'

FROM information_schema.INNODB_LOCK_WAITS a

JOIN information_schema.INNODB_TRX b ON a.requesting_trx_id=b.trx_id

JOIN information_schema.INNODB_TRX c ON a.blocking_trx_id=c.trx_id

WHERE (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started))>30

##> mysql 5.7

SELECT waiting_pid AS '被阻塞的线程',

waiting_query AS '被阻塞的SQL',

blocking_pid AS '阻塞线程',

blocking_query AS '阻塞SQL',

wait_age AS '阻塞时间',

sql_kill_blocking_query AS '建议操作'

FROM sys.innodb_lock_waits

WHERE (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(wait_started))>30

```

### 11.1.8 死锁

```shell

##pt工具

pt-deadlock-logger u=admin, p=123456, h=127.0.0.1 \

--create-dest-table \

--dest u=admin,p=123456, h=127.0.0.1.D=dba,t=deadlock

##全局参数,日志监控

mysql> set persist innodb_print_all_deadlocks=on;

```

### 11.1.9 慢查询

1. 监控慢查询日志

2. 通过information_shcema.processlist表实时监控

### 11.1.10 主从延迟

1. show slave status\G

2. pt-heartbeat

```shell

##主库

pt-heartbeat --user=xx --password=xxx -h master --create-table --database xxx --update --daemonize --interval=1

##从库

pt-hearbeat --user=xx --password=xx -h slave --database xxx

--monitor --daemonize --log /tmp/slave_lag.log

```

### 11.1.11 主从状态

1. show slave status\G

IO/SQL 两个线程状态(yes or no)

## 11.2 负载问题

![](http://img.blog.itpub.net/blog/2020/03/27/654b7a8eec835c17.png?x-oss-process=style/bb)

## 11.3 优化

![](http://img.blog.itpub.net/blog/2020/03/27/d4a6c984b8340636.png?x-oss-process=style/bb)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值