Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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       |
+---------+--------------+----------+----------+

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

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