8.9.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
문을 사용하여 키 캐시에 할당 된 경우 사전로드하여 인덱스 블록이 캐시에 저장됩니다. 그렇지 않으면 인덱스는 기본 키 캐시에로드됩니다.