Performance Schema
Performance Schema提供了有关MySQL服务器内部运行的操作上的底层指标。为了解释清楚Performance Schema的工作机制,先介绍两个概念:
程序插桩(instrument),指的是在MySQL代码中插入探测代码,以获取我们想了解的信息。
消费者表(consumer),指的是存储关于程序插桩代码信息的表。如果我们为查询模块添加插桩,相应的消费者表将记录诸如执行总数、未使用索引的次数、花费的时间等信息。
启用插桩会调用额外的代码,这意味着插桩会消耗CPU资源。
程序插桩(instrument)
在performance_schema中,setup_instruments表包含所有支持的插桩的列表。所有插桩的名称都由用斜杠分隔的部件组成:
消费者表(consumer)
消费者表是插桩发送信息的目的地,测量结果存储在Performance Schema数据库的多个表中。基于它们的用途,可将表分为以下几个类别:
当前和历史数据
*_current:当前服务器上进行中的事件。
*_history:每个线程最近完成的 10 个事件。
*_history_long:从全局来看,每个线程最近完成的 10000 个事件。
*_history 和 *_history_long 表的大小是可配置的。
汇总表 汇总表保存有关该表所建议的内容的聚合信息。 例如,memory_summary_by_thread_by_event_name 表保存了用户连接或任何后台线程的每个MySQL线程的聚合内存使用情况。
摘要 摘要是一种通过删除查询中的变量来聚合查询的方法。
上述查询的摘要是:
实例表(Instance)
实例是指对象实例,用于MySQL安装程序。例如,file_instances表包含文件名和访问这些文件的线程数。
设置表(Setup) 设置表用于performance_schema的运行时设置。
其他表 还有一些表的名称没有遵循严格的模式。例如,metadata_locks 表保存关于元数据锁的数据。
资源消耗
Performance Schema收集的数据保存在内存中,可以通过设置消费者表的最大大小来限制其使用的内存量。performance_schema中的一些表支持自动伸缩,这意味着它们在启动时分配最小数量的内存,并根据需要调整其大小。然而,一旦分配了内存,即使禁用了特定的插桩并截断了表,也不会再释放该内存。
每个插桩指令的调用都会添加两个宏调用,以将数据存储在performance_schema中。这意味着插桩越多,CPU的使用率就越高。
sys Schema
自5.7版以来,标准MySQL发行版包括一个和performance_schema配套使用的sys schema,它全部基于performance_schema上的视图和存储例程组成。它的设计目的是让performance_schema体验更加流畅,它本身并不存储任何数据。
最后更新于