mysqlのPACK_KEYSの詳細な説明

黄舟
黄舟オリジナル
2017-03-04 14:57:001414ブラウズ

mysql の myisam エンジンには、圧縮インデックス PACK_KEYS と呼ばれる無視しやすいものがあります。

myISAM は、デフォルトで文字列を圧縮し、整数も圧縮できます。

テーブルの作成 PACK_KEYS を使用してインデックス圧縮方法を制御できます。

PACK_KEYS は MySQL マニュアルで次のように説明されています:

インデックスを小さくしたい場合は、このオプションを 1 に設定します。これを行うと通常、更新が遅くなり、読み取りが速くなります。このオプションを 0 に設定すると、すべてのキーワード圧縮が無効になります。このオプションが DEFAULT に設定されている場合、ストレージ エンジンは長い CHAR または VARCHAR カラムのみを圧縮します (MyISAM のみ)。

PACK_KEYS を使用しない場合、デフォルトのアクションでは文字列のみが圧縮され、数値は圧縮されません。 PACK_KEYS=1 を使用すると、数値も圧縮されます。

バイナリ数値キーワードを圧縮する場合、MySQL はプレフィックス圧縮を使用します:

o 各キーワードには、前のキーワードの何バイトが次のキーワードと同じであるかを示す追加バイトが必要です。

o 行へのポインタは、圧縮を向上させるためにキーワードの後に​​ハイエンディアン順に格納されます。

これは、連続する 2 行に同一のキーワードが多数ある場合、後続の「同一」キーワードは、通常、(行へのポインターを含む) 2 バイトしか占有しないことを意味します。対照的に、通常の状況では、後続のキーは storage_size_for_key + pointer_size (ポインター サイズは通常 4) を占有します。ただし、プレフィックス圧縮は、多くの数値が同一である場合にのみ有益です。すべてのキーワードが完全に異なり、キーワードに NULL 値を含めることができない場合は、キーワードごとにさらに 1 バイトが使用されます。 (この場合、圧縮されたキーワードの長さを格納するバイトは、キーワードが NULL かどうかをマークするために使用されるバイトと同じです。

たとえば、「abc.pdf 」などのファイル名を保存するフィールドがあります。 、PDF は誰にとっても同じなので、次のフィールドに基づいて圧縮インデックスを

使用できます:

CREATE  TABLE <TABLE_NAME> (
`id` INT NOT NULL ,
`name` VARCHAR(250) NULL ,
PRIMARY KEY (`id`) )
PACK_KEYS = 1;
ALTER TABLE table_name PACK_KEYS = 1;

上記は、mysql の PACK_KEYS の詳細な説明です。さらに関連する内容については、PHP 中国語 Web サイトに注意してください。 (www.php.cn)



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。