» www.Giftbox.Az - Bir birindən gözəl hədiyyə satışı
ウィキペディアランダム
毎日カテゴリ
共有: WhatsappFacebookTwitterVK

MyISAM

MyISAMは、かつてMySQLリレーショナルデータベース管理システムで既定として採用されていたストレージエンジン[1]。古いISAMコードを基礎としており、多くの便利な拡張がされている。2009年12月リリースの MySQL バージョン5.5より前のバージョンにて既定のエンジンであり、バージョン5.5からはInnoDBが既定のエンジンとなった[1]

MyISAM
開発元 オラクル
プログラミング
言語
C言語
対応OS クロスプラットフォーム
種別 データベースエンジン
ライセンス GNU General Public License
公式サイト www.mysql.com
(テンプレートを表示)

ファイルシステム

MyISAMの各テーブルは、3つのファイルとしてディスクに保存される(パーティション化されていない場合)。ファイルの名前はテーブル名で始まり、ファイルの種類を示す拡張子が付いている。 MySQLは.frmファイルにテーブルの定義を格納する。.frmファイルはMySQL Databaseの仕様として定義されており、MyISAMの仕様には含まれない。データファイルは拡張子 .MYD(MYData)、インデックスファイルは拡張子 .MYI(MYIndex)。インデックスファイルが破損した場合は、再作成が可能である。

ファイル形式は、ROW_FORMATテーブルオプションによって異なる。オプションは以下の通り。

  • FIXED:"固定" は、すべてのデータ(可変長型を含む)を固定長の形式とする。この形式は読み取りが速く、破損テーブルが修復しやすい。テーブルに大きな可変長列(BLOBまたはTEXT)がある場合、FIXED形式は使用できない。
  • DYNAMIC:"動的"では、可変長列のサイズは固定されていない。この形式は読み取りに少し時間がかかるが、ディスク上のスペースを節約できる。
  • COMPRESSED:"圧縮"は、MySQLが停止されている間に専用ツールで作成できる読み取り専用テーブルである。このため、この選択肢を取ることは敷居が高いが、圧縮率は一般的に他の方法よりもかなり高くできる。

MyISAMファイルはシステム非依存でトランザクション非対応のため、使用しているサーバー機能に依存しない。そのため、MyISAMファイルを異なるサーバー間でそれらをコピーして利用することができる。

特徴

MyISAMは、読み取り操作が多く、書き込みが少ない環境向けに最適化されている。 MyISAMを採用すべき典型的な領域はデータウェアハウスであり、非常に大きなテーブルへのクエリを発行し、テーブルの更新はデータベースが使われない夜間などに行われる場合である。

MyISAMが高速読み取りを可能にする理由は、そのインデックス構造にある。各エントリはデータファイル内のレコードを指し、ポインタはファイルの先頭からオフセットされている。そのため、特にフファイル形式がFIXの場合、レコードをすばやく読み取れる。行の長さは固定されている。挿入操作も簡単で、データファイルの最後に新しい行を追加するだけである。一方、削除や更新の操作には課題がある。削除する場合は、行のオフセット値を変更しないで済むようにするには、削除後の空のスペースはそのまま残す必要がる。行の長さが変更される更新の場合、短くなる場合はからのスペースはそのまま残り、長くなる場合は行は断片化されて格納されることになる。行をデフラグして空きスペースを生み出すには、OPTIMIZETABLEコマンドを実行する。このように、仕組みが単純なため、MyISAMのインデックス統計は非常に正確である。

ただし、MyISAMの単純さには欠点がいくつかり、トランザクションのサポートがないことが大きな課題である。外部キーもサポートされていない。また、通常のユースケースでは、InnoDBの方がMyISAMよりも高速に動作する[2]

MySQL 5.5以降のバージョンは、参照整合性の制約とより高い同時実行性を確保するため、InnoDBエンジンに切り替えられた。

MyISAMは、FULLTEXTインデックス作成とOpenGISデータ型をサポートする。

MariaDBでの実装

MariaDBAriaと呼ばれるクラッシュに強いMyISAMの代替ストレージエンジンを使う[3]。ただし、MariaDB開発者は引き続きMyISAM機能も開発しており、"キーキャッシュのセグメント化 (Segmented Key Cache)"機能を実装した[4]。 有効にすると、MyISAMインデックスのキャッシュがセグメントに分割される。これを使うと、スレッドがキャッシュ全体をロックする必要なくなり、同時実行性が向上する。

MariaDBでは、MyISAMは仮想列もサポートする。

(Drizzle)はMyISAMを含まない。

関連項目

  • (MySQLデータベースエンジンの比較)(英語版)

脚注

 

  1. ^ a b “” (2009年5月10日). 2010年11月20日時点のオリジナルよりアーカイブ。2021年3月16日閲覧。
  2. ^ “MySQL Performance: InnoDB vs MyISAM in 5.6” (2012年11月16日). 2021年3月16日閲覧。
  3. ^ “Aria FAQ”. MariaDB (2010年8月15日). 2021年3月16日閲覧。
  4. ^ “Segmented Key Cache”. MariaDB (2010年8月17日). 2021年3月16日閲覧。

外部リンク

  • MySQL Documentation on MyISAM Storage Engine
  • MyISAM's open files limit and table-cache problem explained
  • Using MyISAM in production
  • by Rackspace (2015年2月8日にアーカイブ)
  • (2013年3月8日にアーカイブ)
  • Converting Tables from MyISAM to InnoDB
ウィキペディア、ウィキ、本、library、論文、読んだ、ダウンロード、自由、無料ダウンロード、mp3、video、mp4、3gp、 jpg、jpeg、gif、png、画像、音楽、歌、映画、本、ゲーム、ゲーム。