MyISAM ストレージ エンジン テーブルはデータベース内にあり、各テーブルはテーブル名にちなんで名付けられた 3 つの物理ファイルとして保存されます。まず、ストレージ エンジンに不可欠なテーブル構造定義情報を格納する .frm ファイルが必要です。また、テーブル データ (.MYD) とインデックス データ (.MYI) を格納する .MYD ファイルと .MYI ファイルもあります。 ) それぞれ。各テーブルには、MyISAM ストレージ タイプのテーブルのストレージとして 3 つのファイルしかありません。つまり、テーブルにインデックスがいくつあっても、それらはすべて同じ .MYI ファイルに格納されます。
MyISAM は次の 3 種類のインデックスをサポートします:
1. B ツリー インデックス
B ツリー インデックスは、名前が示すように、すべてのインデックス ノードがバランス ツリーのデータ構造に従って格納されることを意味します。インデックス データ ノードはリーフ ノードにあります。
2. R-Tree インデックス
R-Tree インデックスの保存方法は、主にストレージ領域と多次元データのフィールドにインデックスを付けるように設計されています。インデックス作成ではジオメトリ タイプのフィールドのみがサポートされます。
3. 全文インデックス
全文インデックスはいわゆるフルテキスト インデックスであり、その記憶構造も B ツリーです。主に、同様のクエリを使用する必要がある場合の非効率性の問題を解決するためです。
MyISAM 上記の 3 つのインデックス タイプのうち、最もよく使用されるのは B-Tree インデックスです。Fulltext は時々使用されますが、R-Tree インデックスは一般的なシステムではほとんど使用されません。さらに、MyISAM の B ツリー インデックスには、より大きな制限があります。つまり、インデックスに参加するすべてのフィールドの長さの合計が 1000 バイトを超えることはできません。
各 MyISAM テーブルは同じサフィックス名を持つ .MYD ファイルに保存されますが、MyISAM のデータ保存形式は静的 (FIXED) 固定長に分割されているため、各ファイルの保存形式は実際にはまったく同じではない可能性があります。 、動的 (DYNAMIC) 可変長、圧縮 (COMPRESSED) の 3 つの形式。もちろん、テーブルの作成時に、ROW_FORMAT を介して 3 つの形式から圧縮するかどうかを選択することも、myisampack ツールを使用して圧縮することもできます。非圧縮の場合、静的か動的かは、テーブル内のフィールドの定義に関係します。テーブルに可変長フィールドがある限り、テーブルは DYNAMIC 形式でなければなりません。可変長フィールドがない場合は、もちろん、alter table コマンドを使用して強制することもできます。 VARCHAR 型フィールドを持つ DYNAMIC テーブルを含むテーブルは FIXED に変換されますが、その結果、元の VARCHAR フィールド型は自動的に CHAR 型に変換されます。逆に、FIXED を DYNAMIC に変換すると、CHAR 型のフィールドも VARCHAR 型に変換されてしまうため、手動で強制変換する場合は注意が必要です。
MyISAM ストレージ エンジンのテーブルは十分に信頼できますか? MySQL ユーザー リファレンス マニュアルには、次の状況が発生したときに発生する可能性のあるテーブル ファイルの破損がリストされています。失敗;
4. MyISAM ストレージ エンジンのバグ?
MyISAM ストレージ エンジンのテーブル ファイルでエラーが発生すると、そのテーブルにのみ影響があり、他のテーブルや他のデータベースには影響しません。データベースの実行中に MyISAM テーブルに問題が見つかった場合は、check table コマンドを使用してオンラインで検証を試みることができます。また、repair table コマンドを使用して修復を試みることもできます。データベースが閉じられている場合、myisamchk ツールを使用してデータベース内の 1 つ (または一部) のテーブルを検出または修復することもできます。ただし、絶対に必要な場合を除き、テーブルを簡単に修復しないこと、また不必要な結果を避けるために修復する前にできるだけ多くのバックアップを作成することを強くお勧めします。
さらに、MyISAM ストレージ エンジンのテーブルは理論的には複数のデータベース インスタンスで同時に使用および操作できますが、これはお勧めしません。また、MySQL の公式ユーザー マニュアルにも記載されています。複数のデータベース インスタンスを同時に使用するには、MyISAM ストレージ ファイルが mysqld 間で共有されます。
上記は MySQL ストレージ エンジンの MyISAM ストレージ エンジンの紹介です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。