首页 > 数据库 > > 25.1 性能方案 快速开始
参考官方文档:
https://dev.mysql.com/doc/refman/5.7/en/performance-schema.html
MySQL性能方案是一种用于在低级别监控MySQL服务器执行的功能。 性能方案具有以下特征:
性能方案旨在提供对服务器执行的有用的访问信息,同时对服务器性能的影响最小。 实现遵循以下设计目标:
注意:
MySQL sys架构是一组对象,可以方便地访问Performance Schema收集的数据。 默认情况下安装sys模式
默认情况下启用性能方案。 要显式启用或禁用它,请启动服务器,并将performance_schema变量设置为适当的值。 例如,在服务器my.cnf文件中使用以下行:
[mysqld]
performance_schema=ON
当服务器启动时,它会看到performance_schema并尝试初始化Performance Schema。 要验证成功初始化,请使用以下语句:
mysql> SHOW VARIABLES LIKE 'performance_schema';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| performance_schema | ON |
+--------------------+-------+
值为ON表示性能模式已成功初始化并可以使用。 值OFF表示发生了一些错误。 检查服务器错误日志以获取有关错误的信息。
性能方案作为存储引擎被实现。 如果此引擎可用(您之前应该已经检查过),则应在INFORMATION_SCHEMA.ENGINES表或SHOW ENGINES语句的输出中看到它的SUPPORT值为YES:
SELECT * FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE='PERFORMANCE_SCHEMA'\G
PERFORMANCE_SCHEMA存储引擎对performance_schema数据库中的表进行操作。 您可以将performance_schema设置为默认数据库,以便不需要使用数据库名称限定对其表的引用:
mysql> USE performance_schema;
性能方案表存储在performance_schema数据库中。 通过从INFORMATION_SCHEMA数据库中选择或使用SHOW语句,可以获得有关此数据库及其表的结构的信息,以及任何其他数据库。 例如,使用这些语句中的任何一个来查看存在哪些Performance Schema表:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'performance_schema';
SHOW TABLES FROM performance_schema;
--随着时间的推进,会逐渐增加
performance_schema数据库的名称是小写的,其中的表名称也是如此。 查询应以小写形式指定名称。
要查看各个表的结构,请使用SHOW CREATE TABLE:
SHOW CREATE TABLE performance_schema.setup_consumers\G
通过从诸如INFORMATION_SCHEMA.COLUMNS之类的表中选择或使用诸如SHOW COLUMNS之类的语句,也可以使用表结构。
performance_schema数据库中的表可以根据其中的信息类型进行分组:当前事件,事件历史和摘要,对象实例和设置(配置)信息。 以下示例说明了这些表的一些用法。
最初,并非所有检测和消费者都已启用,因此性能模式不会收集所有事件。 要打开所有这些并启用事件计时,请执行两个语句(行计数可能因MySQL版本而异):
mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES';
Query OK, 560 rows affected (0.04 sec)
mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES';
Query OK, 10 rows affected (0.00 sec)
要查看服务器当前正在执行的操作,请检查events_waits_current表。 它每个线程包含一行,显示每个线程最近监视的事件:
SELECT * FROM performance_schema.events_waits_current\G
历史记录表包含与当前事件表相同的行,但是有更多行并显示服务器“最近”而不是“当前”正在执行的操作.events_waits_history和events_waits_history_long表包含每个线程的最近10个事件和 最近的10,000个事件。 例如,要查看线程13生成的最近事件的信息,请执行以下操作:
SELECT EVENT_ID, EVENT_NAME, TIMER_WAIT FROM performance_schema.events_waits_history WHERE THREAD_ID = 13 ORDER BY EVENT_ID;
当新事件添加到历史记录表时,如果表已满,则会丢弃旧事件。
汇总表提供了一段时间内所有事件的汇总信息。 该组中的表以不同方式汇总事件数据。 要查看哪些仪器执行次数最多或者等待时间最长,请对events_waits_summary_global_by_event_name表上的COUNT_STAR或SUM_TIMER_WAIT列进行排序,分别对应于所有事件计算的COUNT(*)或SUM(TIMER_WAIT)值:
SELECT EVENT_NAME, COUNT_STAR FROM performance_schema.events_waits_summary_global_by_event_name ORDER BY COUNT_STAR DESC LIMIT 10;
SELECT EVENT_NAME, SUM_TIMER_WAIT FROM performance_schema.events_waits_summary_global_by_event_name ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;
实例表说明了检测的对象类型。 当由服务器使用时,检测对象产生事件。 这些表提供事件名称和解释性说明或状态信息。 例如,file_instances表列出了文件I / O操作及其相关文件的检测实例:
SELECT * FROM performance_schema.file_instances\G
设置表用于配置和显示监视特征。 例如,setup_instruments列出了可以收集事件的检测集,并显示了哪些已启用:
SELECT * FROM performance_schema.setup_instruments;
要控制是否为检测收集事件,请将其ENABLED值设置为YES或NO。 例如:
mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'NO' WHERE NAME = 'wait/synch/mutex/sql/LOCK_mysql_create_db';
性能模式使用收集的事件来更新performance_schema数据库中的表,这些表充当事件信息的“使用者”。 setup_consumers表列出了可用的使用者以及哪些已启用:
SELECT * FROM performance_schema.setup_consumers;
要控制性能方案是否将其维护为事件信息的目标,请设置其ENABLED值。
有一些杂项表不属于任何以前的组。 例如,performance_timers列出了可用的事件计时器及其特征。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3152198/ ,如需转载,请注明出处,否则将追究法律责任。