MySQL运行时的可观测性 观测MySQL运行时实时监控和统计(3)
导读:MySQL运行时的可观测性,上面我们只罗列了部分比较重要的状态指标。从这个结果也可以佐证slow query log中的结果,确实没创建临时表。 作为参照,查看这条SQL对应的slow query log记
MySQL运行时的可观测性
上面我们只罗列了部分比较重要的状态指标。从这个结果也可以佐证slow query log中的结果,确实没创建临时表。
作为参照,查看这条SQL对应的slow query log记录:
# Query_time: 0.585593 Lock_time: 0.000002 Rows_sent: 10 Rows_examined: 2844057 Thread_id: 110 Errno: 0 Killed: 0 Bytes_received: 115 Bytes_sent: 313 Read_first: 1 Read_last: 0 Read_key: 1 Read_next: 2844047 Read_prev: 0 Read_rnd: 0 Read_rnd_next: 0 Sort_merge_passes: 0 Sort_range_count: 0 Sort_rows: 10 Sort_scan_count: 1 Created_tmp_disk_tables: 0 Created_tmp_tables: 0 Start: 2023-07-06T10:06:01.438376+08:00 End: 2023-07-06T10:06:02.023969+08:00 Schema: employees Rows_affected: 0
# Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0
# InnoDB_trx_id: 0
# Full_scan: Yes Full_join: No Tmp_table: No Tmp_table_on_disk: No
# Filesort: Yes Filesort_on_disk: No Merge_passes: 0
# InnoDB_IO_r_ops: 0 InnoDB_IO_r_bytes: 0 InnoDB_IO_r_wait: 0.000000
# InnoDB_rec_lock_wait: 0.000000 InnoDB_queue_wait: 0.000000
# InnoDB_pages_distinct: 4281
use employees;
SET timestamp=1688609161;
select emp_no, sum(salary) as total_salary from salaries group by emp_no order by total_salary desc limit 10;
可以看到,Created_tmp_disk_tables,Created_tmp_tables,Handler_read_next,Select_full_join,Select_scan,Sort_rows,Sort_scan, 等几个指标的数值是一样的。
还可以查看该SQL运行时的I/O latency情况,SQL运行前后两次查询对比:
greatsql> select * from sys.io_by_thread_by_latency where thread_id = 207;
+----------------+-------+---------------+-------------+-------------+-------------+-----------+----------------+
| user | total | total_latency | min_latency | avg_latency | max_latency | thread_id | processlist_id |
+----------------+-------+---------------+-------------+-------------+-------------+-----------+----------------+
| root@localhost | 7 | 75.39 us | 5.84 us | 10.77 us | 22.12 us | 207 | 110 |
+----------------+-------+---------------+-------------+-------------+-------------+-----------+----------------+
...
greatsql> select * from sys.io_by_thread_by_latency where thread_id = 207;
+----------------+-------+---------------+-------------+-------------+-------------+-----------+----------------+
| user | total | total_latency | min_latency | avg_latency | max_latency | thread_id | processlist_id |
+----------------+-------+---------------+-------------+-------------+-------------+-----------+----------------+
| root@localhost | 8 | 85.29 us | 5.84 us | 10.66 us | 22.12 us | 207 | 110 |
+----------------+-------+---------------+-------------+-------------+-------------+-----------+----------------+
可以看到这个SQL运行时的I/O latency是:85.29 – 75.39 = 9.9us。
3.3 观测SQL运行进度
相关阅读
-
InnoDB的一次更新事务是怎么实现的?
跟大家聊一聊InnoDB的一次更新事务是怎么实现的方面的介绍,相关内容具体如下: InnoDB的一次更新事务涉及到多个组件和步骤,包括Buffer Pool、BinLog、UndoLog、RedoLog以及物理磁盘。 下面是一次
-
如何保证缓存与数据库的双写一致性
小编为网友们解答如何保证缓存与数据库的双写一致性方面的内容,如有不对的地方欢迎指正! 思考:redis作为缓存,mysql的数据如何与redis进行同步?(双写一致性问题) 注意在回答这个问题的时
-
HTTP状态码深入解析:401 Unauthorized
为大家介绍HTTP状态码深入解析的教程内容,接下来一起来看看吧。 在互联网通信中,HTTP状态码是用来表示服务器响应的一种方式。 当我们在浏览器中访问网页时,服务器会返回一个状态码,
-
OSPF的基本概念 OSPF的基本原理
这些方法你知道吗?OSPF的基本概念方面的内容,接下来就是全面介绍。 1. 路由器ID 在OSPF中,每个路由器都有一个唯一的路由器ID(Router ID),用于标识自己。 路由器ID可以是一个IPv4地址,通


