Mysql性能优化(1) | 慢SQL排查

Mysql性能排查的步骤:
1)通过show status了解各种sql的执行频率;
2)排查慢SQL。

一、了解各种SQL的执行频率

mysql> show [session|global] status like ‘com_%’;
这边com_表示的是某种操作的执行次数。如com_select、com_update、com_delete等。

mysql> show status like 'com_update%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Com_update       | 0     |
| Com_update_multi | 0     |
+------------------+-------+

注意:
1)默认是session级别的查询;
2)global表示的是启动以来的所有执行SQL,session表示的是本次会话的查询SQL。

二、定位慢SQL

1.了解慢SQL的时间阈值

通过long_query_time参数来查看,单位为s。
Mysql默认慢SQL时间为10秒,DRDS默认为1秒。

mysql> show variables like '%long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set, 1 warning (0.00 sec)

2.查看慢SQL相关参数

MySQL [db_test1]> show global variables like '%slow%';
+---------------------------+-------------------------------------------+
| Variable_name             | Value                                     |
+---------------------------+-------------------------------------------+
| log_slow_admin_statements | OFF                                       |
| log_slow_slave_statements | OFF                                       |
| slow_launch_time          | 2                                         |
| slow_query_log            | ON                                        |
| slow_query_log_file       | /home/mysql/data3118/mysql/slow_query.log |
+---------------------------+-------------------------------------------+

slow_query_log 表示慢查询SQL会记录在log文件中(Mysql默认OFF,DRDS默认ON);
slow_query_log_file表示慢查询SQL的记录日志。

3.查看慢SQL(Mysql和DRDS有区别)

1)查看当前慢SQL的数量

mysql> show status like '%slow_queries%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries  | 0     |
+---------------+-------+
1 row in set (0.00 sec)

2)查看慢SQL明细

  • Mysql
    通过slow_query_log_file中标注的文件查看慢SQL明细。
  • DRDS
    ① show full slow(字段解释见下文)
    查看逻辑慢SQL-------应用发送到DRDS的慢SQL
    ② show full physical slow
    查看物理慢SQL-----DRDS发送到RDS的慢SQL
    ③ show slow limit 10
    查看耗时top10慢SQL

show full slow字段解释:
trace_id:同一个逻辑SQL及其生成的物理SQL的id相同(即该trace_id也可以在show full physical slow中找到)
execute_time:DRDS执行该SQL的耗时(单位为ms)
affect_row:该SQL返回的记录数(针对查询)或者影响行数(针对DML)(-1代表执行没成功)

| TRACE_ID         | USER     | HOST            | START_TIME              | EXECUTE_TIME | AFFECT_ROW | SQL                                                                                                                                                                                                                                                             |
| 106cfe91262cc000 | db_test1 | 127.0.0.1       | 2020-04-05 20:01:05.951 |         7984 |          0 | show tables                                                                                                                                                                                                                                                     |
| 107829d9d9ecc000 | db_test1 | 127.0.0.1       | 2020-04-14 12:13:33.009 |        10899 |          0 | /*+ TDDL:cmd_extra(MAX_TABLE_PARTITIONS_PER_DB= 400) */create table test_db(c1 int primary key, c2 varchar(10), c3 date) dbpartition by hash(c1) tbpartition by hash(c1) tbpartitions 129                                  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值