8.10.2.4 索引预加载
如果键高速缓存中有足够的块来保存整个索引的块,或者至少包含与其非叶节点相对应的块,那么在开始使用键高速缓存之前,先将索引块预加载到索引中是有意义的。预加载使您能够以最有效的方式将 table 索引块放入键高速缓存缓冲区中:通过从磁盘 Sequences 读取索引块。
如果不进行预加载,则仍会根据查询的需要将这些块放入密钥缓存中。尽管这些块将保留在高速缓存中,但是由于所有块都有足够的缓冲区,所以它们是从磁盘中以随机 Sequences 而不是 Sequences 获取的。
要将索引预加载到缓存中,请使用将索引加载到缓存中语句。例如,以下语句预装 tablet1
和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语句将索引分配给键高速缓存,则预加载会将索引块放入该高速缓存中。否则,索引将加载到默认键缓存中。