该Performance_schema似乎有varying个量的performance impact,我很好奇我们必须使用哪些工具来减轻影响?
我在mysql 8.x中看到开发人员正在研究setting up indexing,这是否是我们可以自己手动添加到数据库中的潜在内容?如果是这样,是否有资源可用于添加PFS可能使用的索引?
解决方法:
不,不支持.您根本不能在性能模式表上更改表.
master [localhost] {root} (performance_schema) > select version();
+------------+
| version() |
+------------+
| 5.7.20-log |
+------------+
master [localhost] {root} (performance_schema) > alter table events_statements_summary_by_thread_by_event_name add primary key (thread_id, event_name);
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'performance_schema'
master [localhost] {root} (performance_schema) > show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
即使可以做到,在MySQL 8.0之前的Performance_schema中添加索引也不会提高性能,但会使开销变得更糟.
您链接的文章说:
Some readers might also have noted that the performance_schema tables are highly volatile, with data written to it continuously, while read only a few times, typically once in a while by a monitoring application. A table used in a workload which is write intensive with only a few reads is a red flag when it comes to add an index, as the cost of maintaining the index is order of magnitudes higher that the benefits.
为MySQL 8.0开发的用于模拟索引的功能只是假装存储持久索引.如文章所述,它们仅报告索引以指导优化器选择最佳访问模式.确实没有任何索引.