10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

8.2.4优化性能模式查询

监视数据库的应用程序可能经常使用Performance Schema表。要最有效地为这些表编写查询,请利用它们的索引。例如,包含一个在哪里子句,根据与索引列中的特定值的比较来限制检索的行。

大多数性能模式表都有索引。不这样做的表是指那些通常包含很少行或不太可能频繁查询的表。Performance Schema索引使优化器能够访问执行计划,而不是全表扫描。这些索引还提高了相关对象的性能,例如sys使用这些表的模式视图。

要查看给定的Performance Schema表是否具有索引以及索引是什么,请使用显示指数显示创建表

SHOW INDEX FROM performance_schema。账户\ G  *************************** 1。row *************************** Table: accounts Non_unique: 0 Key_name: ACCOUNT Seq_in_index: 1 Column_name: USER Collation: NULL Cardinality: NULL Sub_part: NULL Packed: NULL NULL NULL: YES Index_type: HASH Comment: Index_comment: Visible: YES *************************** 2.单击“确定”。row *************************** Table: accounts Non_unique: 0 Key_name: ACCOUNT Seq_in_index: 2 Column_name: HOST Collation: NULL Cardinality: NULL Sub_part: NULL Packed: NULL NULL: YES Index_type: HASH Comment: Index_comment: Visible: YES mysql> SHOW CREATE Table performance_schema。rwlock_instances \ G  *************************** 1。行***************************表:rwlock_instances Create表:Create表' rwlock_instances ' (' NAME ' varchar(128) NOT NULL, ' OBJECT_INSTANCE_BEGIN ' bigint(20) unsigned NOT NULL, ' WRITE_LOCKED_BY_THREAD_ID ' bigint(20) unsigned DEFAULT NULL, ' READ_LOCKED_BY_COUNT ' int(10) unsigned NOT NULL,主键(' OBJECT_INSTANCE_BEGIN '), KEY ' NAME ' (' NAME '), KEY ' WRITE_LOCKED_BY_THREAD_ID ' (' WRITE_LOCKED_BY_THREAD_ID '))引擎=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

要查看Performance Schema查询的执行计划以及它是否使用任何索引,请使用解释

mysql> SELECT * FROM performance_schema。账户在哪里(USER,HOST) = ('root','localhost')\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: accounts partitions: NULL type: const possible_keys: ACCOUNT key: ACCOUNT key_len: 278 ref: const,const rows: 1 filtered: 100.00 Extra: NULL

解释的输出指示优化器使用账户表格账户用户而且宿主列。

性能架构索引是虚拟的:它们是性能架构存储引擎的结构,不使用内存或磁盘存储。性能模式向优化器报告索引信息,以便优化器能够构造高效的执行计划。反过来,Performance Schema使用关于查找内容的优化器信息(例如,特定的键值),这样它就可以在不构建实际索引结构的情况下高效地执行查找。这个实现提供了两个重要的好处:

  • 它完全避免了频繁更新的表通常需要的维护成本。

  • 它在查询执行的早期阶段减少了检索的数据量。对于索引列上的条件,Performance Schema有效地只返回满足查询条件的表行。如果没有索引,Performance Schema将返回表中的所有行,要求优化器稍后针对每一行计算条件,以生成最终结果。

性能模式索引是预定义的,不能删除、添加或更改。

性能模式索引类似于散列索引。例如:

  • 它们仅用于使用< = >操作符。

  • 他们是无序的。如果查询结果必须具有特定的行顺序特征,则包含命令条款。

有关哈希索引的更多信息,请参见第8.3.9节“b -树和哈希索引的比较”