生产环境 Mysql执行性能分析
- 问题排查思路
- 通过 performance_schema 分析
- performance_schema 说明
- 查询 performance_schema 所有表信息
- performance_schema 相关表 主要相关介绍
- events_statements_history 分析慢查询 和查询当时状态字段说明
问题排查思路
- 查询慢SQL日志
- 查询SQL历史执行状态
查询 events_statements_history 表 当时执行SQL的状态分析 根据 以上表格分析查询时间影响行数及是否有锁超时信息排查。 - Explain 关键字问题分析
通过 performance_schema 分析
performance_schema 说明
mysql 自身提供相关监控数据库服务器性能相关的表
查询 performance_schema 所有表信息
SHOW TABLES FROM performance_schema;
performance_schema 相关表 主要相关介绍
主要使用events相关表结构
表名 | 说明 |
---|---|
events_waits_summary_by_instance | 提供等待事件的统计信息,按实例分类 ,用于分析和识别等待事件导致的性能瓶颈 |
events_waits_summary_global_by_event_name | 汇总全局等待事件的统计信息 |
events_statements_current | 用于实时监控当前正在执行的 SQL 语句。 |
events_statements_history | 用于查看最近执行的 SQL 语句历史记录。 |
。。。。 | … |
events_statements_history 分析慢查询 和查询当时状态字段说明
字段名 | 说明 |
---|---|
EVENT_ID | 事件的唯一标识符,每个执行的语句都有一个对应的事件 ID。 |
THREAD_ID | 执行该语句的线程 ID。可以用来识别哪个线程执行了这个语句。 |
SQL_TEXT | 执行的 SQL 语句的文本内容。表示具体的 SQL 查询。 |
TIMER_START | SQL 语句开始执行的时间戳,表示从该时间点开始计时。 |
TIMER_END | SQL 语句结束执行的时间戳,标志着语句停止的时间点。 |
TIMER_WAIT | SQL 语句执行的总时间,单位通常是纳秒。可以用来计算 SQL 执行的总时长。 |
LOCK_TIME | 等待锁的时间,表示执行这个 SQL 语句时等待锁的总时长。可以帮助分析因锁导致的性能问题。 |
ROWS_AFFECTED | 受此 SQL 语句影响的行数。例如,对于 UPDATE 或 DELETE 语句,这个值尤其重要。 |
ROWS_SENT | 为此 SQL 语句返回的结果集中发送的行数,通常在查询语句中很重要。 |
ROWS_EXAMINED | 在执行 SQL 查询时检查过的行数。这可以帮助了解查询的效率。 |