MySQL 8.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
陳述式將索引指派給鍵快取,則預載會將索引區塊放入該快取中。否則,索引會載入預設鍵快取中。