Documentation Home

8.10.2.4 索引预加载

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

在没有预加载的情况下,块仍会根据查询的需要放入键缓存中。尽管这些块保留在缓存中,但因为它们有足够的缓冲区,所以它们是以随机顺序从磁盘中获取的,而不是按顺序。

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

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语句将索引分配给键缓存,则预加载会将索引块放入该缓存中。否则,索引将加载到默认的键缓存中。