25.19 使用性能模式诊断问题

Performance Schema 是一种工具,它通过进行实际测量而不是“疯狂的猜测”来帮助 DBA 进行性能调整。本节演示了为此目的使用性能模式的一些方法。这里的讨论依赖于事件过滤的使用,在第 25.4.2 节“性能模式事件过滤”中进行了描述。

以下示例提供了一种可用于分析可重复问题的方法,例如调查性能瓶颈。首先,您应该有一个可重复的用例,其中性能被认为“太慢”并且需要优化,并且应该启用所有检测(根本不进行预过滤)。

在每次迭代中,Performance Schema 输出(尤其是events_waits_history_longtable)将包含越来越少的由不重要的工具引起的“噪声”,并且鉴于此 table 具有固定的大小,将包含与问题分析相关的越来越多的数据在眼前。

在每次迭代中,调查都应越来越接近问题的根本原因,因为“信噪比”将提高,从而使分析更加容易。

mutex_instances.LOCKED_BY_THREAD_IDrwlock_instances.WRITE_LOCKED_BY_THREAD_ID列对于调查性能瓶颈或僵局非常重要。可以通过 Performance Schema 工具来实现此目的,如下所示:

SELECT * FROM performance_schema.events_waits_current
WHERE THREAD_ID = thread_1;

说查询结果标识线程正在 awaitevents_waits_current.OBJECT_INSTANCE_BEGIN中找到的互斥锁 A。

SELECT * FROM performance_schema.mutex_instances
WHERE OBJECT_INSTANCE_BEGIN = mutex_A;

说查询结果 table 明它是持有 MutexA 的线程 2,如mutex_instances.LOCKED_BY_THREAD_ID所示。

SELECT * FROM performance_schema.events_waits_current
WHERE THREAD_ID = thread_2;
首页