(Translated by https://www.hiragana.jp/)
MyISAM - Wikipedia コンテンツにスキップ

MyISAM

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
MyISAM
開発元かいはつもと オラクル
プログラミング
言語げんご
C言語げんご
対応たいおうOS クロスプラットフォーム
種別しゅべつ データベースエンジン
ライセンス GNU General Public License
公式こうしきサイト www.mysql.com
テンプレートを表示ひょうじ

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

ファイルシステム

[編集へんしゅう]

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をふくまない。

関連かんれん項目こうもく

[編集へんしゅう]

脚注きゃくちゅう

[編集へんしゅう]
  1. ^ a b MySQL 5.5 Reference Manual :: 13 Storage Engines :: 13.6 The InnoDB Storage Engine” (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にち閲覧えつらん

外部がいぶリンク

[編集へんしゅう]