我可以在MySQL的Performance_schema中添加索引吗

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开发的用于模拟索引的功能只是假装存储持久索引.如文章所述,它们仅报告索引以指导优化器选择最佳访问模式.确实没有任何索引.

上一篇:python-动态建立索引以对熊猫中的记录进行分类


下一篇:python-如何选择结合列表和范围的数据框列