文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  索引预加载

10.10.2.4 索引预加载

如果键缓存中有足够的块来容纳整个索引的块,或者至少容纳其非叶子节点对应的块,那么在开始使用键缓存之前,用索引块预加载键缓存是有意义的。预加载使您可以以最有效的方式将表索引块放入键缓存缓冲区:通过按顺序从磁盘读取索引块。

如果没有预加载,这些块仍然会根据查询需要被放入键缓存中。虽然这些块会保留在缓存中,因为有足够的缓冲区来容纳它们,但它们会以随机顺序从磁盘中提取,而不是按顺序。

要将索引预加载到缓存中,请使用 LOAD INDEX INTO CACHE 语句。例如,以下语句将表 t1t2 的索引的节点(索引块)预加载到缓存中

mysql> LOAD INDEX INTO CACHE t1, t2 IGNORE LEAVES;
+---------+--------------+----------+----------+
| Table   | Op           | Msg_type | Msg_text |
+---------+--------------+----------+----------+
| test.t1 | preload_keys | status   | OK       |
| test.t2 | preload_keys | status   | OK       |
+---------+--------------+----------+----------+

LOAD INDEX INTO CACHE t1 IGNORE LEAVES; LOAD INDEX INTO CACHE t2;

IGNORE LEAVES 修饰符会导致仅预加载索引的非叶子节点的块。因此,显示的语句会预加载 t1 中的所有索引块,但仅预加载 t2 的非叶子节点的块。


如果索引已使用 CACHE INDEX 语句分配给键缓存,则预加载会将索引块放入该缓存中。否则,索引将加载到默认键缓存中。