ARCHIVE
ストレージエンジンは、非常に小さなフットプリントに大量のインデックス化されていないデータを格納する、特別な目的のテーブルを作成します。
表 16.5 「ARCHIVE ストレージエンジンの機能」
機能 | Support |
---|---|
B ツリーインデックス | いいえ |
MVCC | いいえ |
T ツリーインデックス | いいえ |
インデックスキャッシュ | いいえ |
クラスタデータベースのサポート | いいえ |
クラスタ化されたインデックス | いいえ |
ストレージの制限 | なし |
データキャッシュ | いいえ |
データディクショナリ向け更新統計 | はい |
トランザクション | いいえ |
ハッシュインデックス | いいえ |
バックアップ/ポイントインタイムリカバリ (ストレージエンジン内ではなくサーバー内で実装されています。) | はい |
レプリケーションのサポート (ストレージエンジン内ではなくサーバー内で実装されています。) | はい |
ロック粒度 | 行 |
全文検索インデックス | いいえ |
圧縮データ | はい |
地理空間インデックスのサポート | いいえ |
地理空間データ型のサポート | はい |
外部キーのサポート | いいえ |
暗号化データ | はい (暗号化機能を介してサーバーに実装されます。) |
ARCHIVE
ストレージエンジンは MySQL バイナリ配布に含まれています。 ソースから MySQL を構築する場合にこのストレージエンジンを有効にするには、CMake を -DWITH_ARCHIVE_STORAGE_ENGINE
オプションで呼び出します。
ARCHIVE
エンジンのソースを調べるには、MySQL ソース配布の storage/archive
ディレクトリを検索します。
ARCHIVE
ストレージエンジンが SHOW ENGINES
ステートメントで使用できるかどうかを確認できます。
ARCHIVE
テーブルを作成すると、ストレージエンジンはテーブル名で始まる名前のファイルを作成します。 データファイルの拡張子は .ARZ
です。 最適化操作中に .ARN
ファイルが現れる場合があります。
ARCHIVE
エンジンでは、INSERT
、REPLACE
および SELECT
はサポートされますが、DELETE
または UPDATE
はサポートされません。 ORDER BY
操作、BLOB
カラムおよび空間データ型はサポートされています (セクション11.4.1「空間データ型」 を参照)。 地理空間参照システムはサポートされていません。 ARCHIVE
エンジンは低レベルロックを使用します。
ARCHIVE
エンジンは AUTO_INCREMENT
カラム属性をサポートしています。 AUTO_INCREMENT
カラムには、一意のインデックスまたは一意でないインデックスのどちらかを付けることができます。 ほかのカラムにインデックスを作成しようとすると、エラーになります。 ARCHIVE
エンジンは、それぞれ、新しいテーブルの最初のシーケンス値を指定したり、既存テーブルのシーケンス値をリセットしたりする CREATE TABLE
ステートメントの AUTO_INCREMENT
テーブルオプションもサポートしています。
ARCHIVE
は、現在の最大カラム値未満の値を AUTO_INCREMENT
カラムに挿入する機能をサポートしていません。 そのようにしようとすると、ER_DUP_KEY
エラーになります。
ARCHIVE
エンジンは BLOB
カラムが要求されない場合はそれらを無視して、読み取り中にそれらを通り過ぎてスキャンします。
ARCHIVE
ストレージエンジンはパーティション分割をサポートしていません。
ストレージ: 行は挿入されるときに圧縮されます。 ARCHIVE
エンジンは zlib
ロスレスデータ圧縮を使用します (http://www.zlib.net/を参照してください)。 OPTIMIZE TABLE
を使用してテーブルを解析したり、より小さいフォーマットにテーブルを圧縮したりできます (OPTIMIZE TABLE
を利用する理由については、このセクションの後半を参照して下さい)。 このエンジンは CHECK TABLE
もサポートしています。 使用される挿入のタイプはいくつかあります。
INSERT
ステートメントは行を圧縮バッファーに単純に入れ、バッファーは必要に応じてフラッシュします。 バッファーへの挿入はロックで保護されています。SELECT
はフラッシュを強制的に実行します。大量挿入は、ほかの挿入が同時に発生した場合を除いて (その場合は部分的に可視になります)、完了後にのみ可視になります。
SELECT
は、ロード中に通常の挿入が発生した場合を除いて、大量挿入をフラッシュすることはありません。
取り出し: 取り出しの際、要求によって行が圧縮解除され、行キャッシュはありません。 SELECT
操作によって完全なテーブルスキャンが実行されます。SELECT
が発生すると、現在使用できる行数を検出し、その行数を読み取ります。 SELECT
は一貫性読み取りとして実行されます。 バルク挿入のみを使用しないかぎり、挿入中に多くの SELECT
ステートメントが圧縮を妨げる可能性があることに注意してください。 圧縮品質を高めるために、OPTIMIZE TABLE
または REPAIR TABLE
を使用できます。 SHOW TABLE STATUS
によって報告される ARCHIVE
テーブルの行数は常に正確です。 セクション13.7.3.4「OPTIMIZE TABLE ステートメント」、セクション13.7.3.5「REPAIR TABLE ステートメント」、およびセクション13.7.7.38「SHOW TABLE STATUS ステートメント」を参照してください。
追加のリソース
ARCHIVE
ストレージエンジンに特化したフォーラムは https://forums.mysql.com/list.php?112 で参照できます。