Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


13.7.6.5 LOAD INDEX INTO CACHE 構文

LOAD INDEX INTO CACHE
  tbl_index_list [, tbl_index_list] ...

tbl_index_list:
  tbl_name
    [PARTITION (partition_list | ALL)]
    [[INDEX|KEY] (index_name[, index_name] ...)]
    [IGNORE LEAVES]

partition_list:
    partition_name[, partition_name][, ...]

LOAD INDEX INTO CACHE ステートメントは、明示的な CACHE INDEX ステートメントによって割り当てられたキーキャッシュ、またはそれ以外の場合はデフォルトのキーキャッシュにテーブルインデックスをプリロードします。

LOAD INDEX INTO CACHE は、MyISAM テーブルにのみ使用されます。MySQL 5.6 では、パーティション化された MyISAM テーブルに対してもサポートされます。さらに、パーティション化されたテーブル上のインデックスを 1 つ、複数、またはすべてのパーティションに対してプリロードできます。

IGNORE LEAVES 修飾子によって、インデックスの非リーフノードのブロックのみがプリロードされます。

IGNORE LEAVES は、パーティション化された MyISAM テーブルに対してもサポートされます。

次のステートメントは、テーブル 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       |
+---------+--------------+----------+----------+

このステートメントは、t1 からすべてのインデックスブロックをプリロードします。t2 からは、非リーフノードのブロックのみをプリロードします。

LOAD INDEX INTO CACHE の構文では、テーブルの特定のインデックスのみをプリロードするように指定できます。現在の実装では、テーブルのすべてのインデックスをキャッシュにプリロードするため、テーブル名以外のものを指定する理由は何もありません。

MySQL 5.6.11 でのみ、このステートメントを発行する前に、gtid_nextAUTOMATIC に設定する必要があります。(Bug #16062608、Bug #16715809、Bug #69045)

MySQL 5.6 では、パーティション化された MyISAM テーブルの特定のパーティション上のインデックスをプリロードできます。たとえば、次の 2 つのステートメントでは、最初が、パーティション化されたテーブル pt のパーティション p0 のインデックスをプリロードするのに対して、2 番目は同じテーブルのパーティション p1p3 のインデックスをプリロードします。

LOAD INDEX INTO CACHE pt PARTITION (p0);
LOAD INDEX INTO CACHE pt PARTITION (p1, p3);

テーブル pt 内のすべてのパーティションのインデックスをプリロードするには、次の 2 つのステートメントのどちらでも使用できます。

LOAD INDEX INTO CACHE pt PARTITION (ALL);

LOAD INDEX INTO CACHE pt;

今示した 2 つのステートメントは同等であり、このうちのどちらを発行しても効果はまったく同じです。つまり、パーティション化されたテーブルのすべてのパーティションのインデックスをプリロードする場合、PARTITION (ALL) 句はオプションです。

複数のパーティションのインデックスをプリロードする場合、それらのパーティションが連続している必要はなく、それらの名前を特定の順序でリストする必要もありません。

LOAD INDEX INTO CACHE ... IGNORE LEAVES は、テーブル内のすべてのインデックスのブロックサイズが同じでないかぎり失敗します。テーブルのインデックスブロックサイズは、myisamchk -dv を使用し、Blocksize カラムをチェックすることによって特定できます。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.