mysql:11568
From: zen kishimoto <zen kishimoto <zen@xxxxxxxxxx>>
Date: Tue, 14 Jun 2005 11:37:15 -0700
Subject: [mysql 11568] MySQL 5.0版の新しいストレッジエンジン
http://databasejournal.com/features/mysql/print.php/3511506 2005年6月14日 MySQL 5.0版の新しいストレッジエンジン MySQL 5.0は新しいストレッジエンジンを提供します。これらは は以前はテーブルタイプと呼ばれていたものです。デフォルトの MyISAMストレッジエンジンとInnoDB, BDB, HEAP とMERGE の他 4つの新しいタイプはCSV, ARCHIVE, FEDERATED とEXAMPLE です。また HEAPストレッジエンジンの名前は変わりました。 今後はMEMORYストレッジエンジンと呼ばれます。新しいタイプ はデフォルトでは使用できません。SHOW ENGINESステートメント でチェックできます。現在のデフォルトは mysql> SHOW ENGINES; +------------+---------+------------------------------------------------------------+ | Engine | Support | Comment | +------------+---------+------------------------------------------------------------+ | MyISAM | DEFAULT | 高性能のMySQL 3.23以降のデフォルト・エンジン | | HEAP | YES | MEMORY のまたの名前 | | MEMORY | YES | Hashベースで、メモリー内に格納、テンポラリ・テーブルに 適す。| | MERGE | YES | 同一のMyISAMテーブルのコレクション | | MRG_MYISAM | YES | MERGE のまたの名前 | | ISAM | NO | もう使われないストレッジ・エンジン、MyISAM を使用のこと。 | | MRG_ISAM | NO | もう使われないストレッジ・エンジン、MERGEを使用のこと。 | | InnoDB | YES | トランザクション、行レベルのロッキングとフォーリンキー のサポート | | INNOBASE | YES | INNODB のまたの名前 | | BDB | YES | トランザクションとページレベルのロッキングをサポート | | BERKELEYDB | YES | BDB のまたの名前 | | NDBCLUSTER | NO | クラスタ、耐障害性のメモリー・ベースのテーブル | | NDB | NO | NDBCLUSTER のまたの名前 | | EXAMPLE | NO | ストレッジエンジンの例 | | ARCHIVE | NO | アーカイブ・ストレッジエンジン | | CSV | NO | CSV ストレッジエンジン | +------------+---------+------------------------------------------------------------+ 現在存在しないストレッジエンジンへのサポートを追加するには、あるオプションで MySQLをビルドしなければなりません。どこかの時点でデフォルトで そう言ったストレッジエンジンが含まれるようになるかも知れません。 それまでは、他に方法はありません。 MEMORY ストレッジエンジンでの変更 最初に以下のように.frm 定義ファイルを生成します。 mysql> CREATE TABLE csv_names(firstname CHAR(30), surname CHAR(40), age INT) ENGINE = CSV; 空のデータファイルも生成されます。CSVファイルはテキストファイルなので 現存のCSV ファイルを同じ場所にコピーできます。MySQLのクライアント から以下のように見えます。 mysql> SELECT * FROM csv_names; +-----------+------------+-----+ | firstname | surname | age | +-----------+------------+-----+ | Jacob | Mbezela | 42 | | Schabir | Field | 29 | +-----------+------------+-----+ インデクスなしではSELECTはあまり効率良くありませんが 完全なテーブルのスキャンを行います。反対にMySQL のクライアントからのレコードをINSERTできます。 mysql> INSERT INTO csv_names VALUES('Quinton','Baxter','75'); CSVファイルの変更を見てみましょう。 "Jacob","Mbezela","42" "Schabir","Field","29" "Quinton","Baxter","75" アーカイブストレッジエンジン MySQL 4.1.3より追加され、アーカイブストレッジエンジンはその名前 のとおり、大量のスペースをとらずに大量のデータを格納します。 インデクスを使用するのは意味がありません。クラッシュ時にテーブル がコラプトすると修理できる方法がありません。このストレッジエンジン をオンにするためには、 -with-archive-storage-engine コンフィギュア オプションを使ってMySQLをビルドしてください。 mysql> CREATE TABLE archive_names(firstname CHAR(30), surname CHAR(40), age INT) ENGINE = ARCHIVE; これは何時も.frm 定義ファイルと.ARZ と.ARM データ とメタデータのファイルを作成します。 アーカイブですから、レコードをDELETE, UPDATEや REPLACEできません。 できることはINSERTと SELECTです。インデクスがないので、SELECT はテーブルの完全スキャンを行わなければなりません。 挿入の際レコードは圧縮されますが、OPTIMIZE TABLEはデータベース 全体を圧縮できます。その際一時的に.ARN ファイルが生成されます。 mysql> INSERT INTO archive_name VALUES('Quinton','Baxter','75'); mysql> SELECT * FROM archive_names; +-----------+------------+-----+ | firstname | surname | age | +-----------+------------+-----+ | Quinton | Baxter | 75 | +-----------+------------+-----+ 結論 新しいストレッジエンジンは、大抵の人々には際ビルドが必要なので 扱いにくいですが、特別な要求がある人々には有益です。時間を 掛けて開発したのですから、そのうちに採用されます。どうしても使い たいけれど、再ビルドをするのが嫌であれば、あまりもう長く 待たないでも良いかも知れません。今使えていても、正式な ドキュメントを良くみてください。変更があるかもしれないからです。 -- Zen Kishimoto www.ipdevices.com IP Devices, Inc. zen@xxxxxxxxxx 2175 De La Cruz Blvd., Suite 10 (408) 567-9391 Santa Clara, CA 95050 (801) 720-8847 (FAX)