10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

MySQL 8.0参考手册/MySQL性能模式/使用性能模式来诊断问题

27.19使用性能模式来诊断问题

性能架构是一种帮助DBA通过实际测量而不是实际测量来调整性能调整的工具狂野的猜测。本节演示了为此目的使用性能模式的某些方法。这里讨论依赖于使用事件过滤,这将描述第27.4.2节“性能架构事件过滤”

以下示例提供了一种方法,您可以用来分析可重复的问题,例如调查性能瓶颈。首先,您应该具有可重复使用的情况,其中表现被视为太慢了并需要优化,您应该启用所有仪器(根本没有预滤波)。

  1. 运行用例。

  2. 使用性能模式表,分析性能问题的根本原因。这种分析严重依赖于过滤后。

  3. 对于排除的问题区域,禁用相应的仪器。例如,如果分析表明该问题与特定存储引擎中的文件I / O无关,则禁用该引擎的文件I / O仪器。然后截断历史记录和摘要表以删除先前收集的事件。

  4. 在步骤1重复该过程。

    每次迭代,性能模式输出,尤其是Events_waits_history_long.表,包含越来越少噪音由非显着仪器引起的,并且鉴于该表具有固定大小,包含与手头问题的分析相关的越来越多的数据。

    随着每次迭代,调查应更接近和更接近问题的根本原因,为信号/噪声比率提高,进行分析更容易。

  5. 一旦确定了性能瓶颈的根本原因,就采取适当的纠正措施,例如:

    • 调整服务器参数(缓存大小,内存等)。

    • 通过不同的方式调整查询,

    • 调整数据库架构(表,索引等)。

    • 调整代码(仅适用于存储引擎或服务器开发人员)。

  6. 在步骤1开始再次开始,以查看性能变化的影响。

mutex_instances.locked_by_thread_id.rwlock_instances.write_locked_by_thread_id.列对于调查性能瓶颈或死锁非常重要。这是通过性能模式仪器实现的,如下所示:

  1. 假设螺纹1卡在等待互斥锁。

  2. 您可以确定线程正在等待的内容:

    选择* from performence_schema.events_waits_current,其中thread_id =thread_1.;

    假设查询结果标识线程正在等待互斥锁A,发现events_waits_current.object_instance_begin

  3. 您可以确定哪个线程持有互斥锁A:

    选择* from performence_schema.mutex_instances,其中object_instance_begin =mutex_a.;

    假设查询结果标识它是线程2持有互斥锁A,如上所找到的mutex_instances.locked_by_thread_id.

  4. 你可以看到什么主题2正在做什么:

    选择* from performence_schema.events_waits_current,其中thread_id =Thread_2.;