25.11 性能架构常规 tableFeature
performance_schema
数据库的名称是小写字母,其中的 table 名称也是小写字母。查询应以小写形式指定名称。
performance_schema
数据库中的许多 table 是只读的,无法修改:
mysql> TRUNCATE TABLE performance_schema.setup_instruments;
ERROR 1683 (HY000): Invalid performance_schema usage.
一些设置 table 中的列可以修改以影响性能架构操作。有些还允许插入或删除行。允许截断以清除收集的事件,因此TRUNCATE TABLE可以用于包含此类信息的 table,例如以events_waits_
开头的 table。
摘要 table 可以用TRUNCATE TABLE截断。通常,效果是将摘要列重置为 0 或NULL
,而不是删除行。这使您可以清除收集的值并重新开始聚合。例如,在更改运行时配置之后,这可能会很有用。截断行为的 exceptions 在各个摘要 table 部分中都有说明。
特权与其他数据库和 table 相同:
-
要从
performance_schema
个 table 中检索,您必须具有SELECT特权。 -
要更改那些可以修改的列,您必须具有UPDATE特权。
-
要截断可以被截断的 table,您必须具有DROP特权。
因为只有有限的一组特权适用于 Performance Schematable,所以尝试使用GRANT ALL
作为在数据库或 tableleval 上授予特权的简写会失败,并显示以下错误:
mysql> GRANT ALL ON performance_schema.*
TO 'u1'@'localhost';
ERROR 1044 (42000): Access denied for user 'root'@'localhost'
to database 'performance_schema'
mysql> GRANT ALL ON performance_schema.setup_instruments
TO 'u2'@'localhost';
ERROR 1044 (42000): Access denied for user 'root'@'localhost'
to database 'performance_schema'
而是,完全授予所需的特权:
mysql> GRANT SELECT ON performance_schema.*
TO 'u1'@'localhost';
Query OK, 0 rows affected (0.03 sec)
mysql> GRANT SELECT, UPDATE ON performance_schema.setup_instruments
TO 'u2'@'localhost';
Query OK, 0 rows affected (0.02 sec)