MYD ファイル形式とは?
.myd ファイルは、MySQL MyISAM テーブルの行データコンポーネントです。MyISAM は各テーブルを、同じベース名を共有する 3 つの兄弟ファイルとして保存します。table.frm はスキーマ定義を保持し、このファイルである table.MYD は実際の行レコードを保持し、table.MYI はインデックスとエンジンメタデータを保持します。
.myd ファイルには生のバイナリ行データのみが含まれており、それ自体には列定義が含まれていません。単独で読み取ることはできず、レコードを解釈するには .frm 定義ファイルと実行中の MySQL または MariaDB サーバーが必要です。行は 3 つの内部レイアウトのいずれかで保存されます。FIXED(すべての列が固定幅)、DYNAMIC(VARCHAR または BLOB 列が存在する場合のデフォルト)、または COMPRESSED(myisampack でオフライン圧縮された読み取り専用テーブル)です。
デフォルトではファイルサイズは 4 GB に制限されていますが、テーブルオプションの MAX_ROWS と AVG_ROW_LENGTH を設定することで最大 256 TB まで拡張できます。削除された行はすぐには再利用されず、OPTIMIZE TABLE が実行されるまでフリーリスト上のギャップとして残ります。オプションのライブチェックサム(CHECKSUM=1)を使用すると、エンジンが行レベルの整合性を追跡できます。myisamchk ユーティリティや CHECK TABLE / REPAIR TABLE SQL ステートメントをコンパニオンファイルの .MYI に対して実行することで、破損の診断と修復が行えます。
MyISAM は、MySQL 3.23(2001年頃)から、InnoDB が新しいデフォルトになった MySQL 5.5(2010年)まで、MySQL のデフォルトストレージエンジンでした。レガシーなデータベースや読み取り中心のワークロードでは、現在でも MySQL と MariaDB の両方でサポートされている .myd ファイルが生成されます。
セキュリティと安全性
リスク: MEDIUM.MYD は不活性なデータであり、実行コードは含まれていませんが、他のデータベースファイルと同様の運用上およびプライバシー上のリスクを伴います。運用面では、MySQL サーバーの実行中に .MYD ファイルをコピー、移動、削除しないでください。また、.MYD を対応する .frm や .MYI から切り離したり、互換性のないサーバーバージョン間でファイルを混ぜたりしないでください。これを行うとテーブルが破損または「クラッシュ」します。プライバシー面では、.MYD はディスク上にテーブルの実際の行をプレーンテキストで保持しているため(MyISAM には暗号化がない)、.MYD が流出すると、ユーザーレコード、メール、個人情報(PII)など、テーブルに保存されていたあらゆるデータが露出するデータ侵害となります。常にコピーに対して作業を行い、機密性の高いデータベースとして扱ってください。
形式の詳細
概要MYD ファイルを開くプログラム
技術的詳細
詳細仕様| ファイル役割 | 1 つの MyISAM テーブルの生の行データを保存。スキーマ、インデックス、エンジンメタデータは含まない |
| コンパニオンファイル | MySQL データディレクトリ内で常に `table.frm`(スキーマ)および `table.MYI`(インデックス)とペアになり、3 つのファイルは同じベース名を共有する |
| 行フォーマット | FIXED(固定幅列)、DYNAMIC(可変長。VARCHAR または BLOB 列が存在する場合のデフォルト)、または COMPRESSED(myisampack でパックされた読み取り専用) |
| バイト順序 | リトルエンディアン |
| エンコーディング | バイナリ - 生のバイナリレコードヒープであり、テキストエンコーディングはない |
| ファイルシグネチャ | 固定されたマジックバイトや印刷可能な ASCII シグネチャはない。拡張子および兄弟ファイルである .frm と .MYI の存在によって識別される |
| デフォルトのファイルサイズ制限 | 1 テーブルデータファイルあたり 4 GB |
| 最大ファイルサイズ | テーブル作成時の MAX_ROWS および AVG_ROW_LENGTH オプションにより最大 256 TB まで設定可能 |
| 削除された行の処理 | 削除された行は内部フリーリスト上のギャップとして残り、OPTIMIZE TABLE を実行することでスペースが回収される |
| 圧縮 | デフォルトではなし。読み取り専用テーブルは myisampack を使用してオフラインでパックし、圧縮された読み取り専用バリアントを作成できる |
| 暗号化 | ネイティブなテーブルレベルの暗号化はない(InnoDB と比較した際の MyISAM の既知の制限) |
| チェックサムと整合性 | CHECKSUM=1 テーブルオプションで有効化されるオプションのライブチェックサム。myisamchk、CHECK TABLE、または REPAIR TABLE による整合性修復が可能 |
| MIME タイプ | application/octet-stream |
| プラットフォームサポート | クロスプラットフォーム:Linux、Windows、macOS、FreeBSD など、MySQL または MariaDB が動作するあらゆる環境 |
| 後継フォーマット | トランザクションワークロード用の InnoDB .ibd ファイル。MySQL 5.5(2010年)で InnoDB が MySQL のデフォルトストレージエンジンとなった |
| リリース日 | 2001 (MyISAM became the default MySQL engine in MySQL 3.23) |
| 最新バージョン | Still produced by any MySQL/MariaDB table using ENGINE=MyISAM (legacy default before InnoDB took over in MySQL 5.5, 2010) |
| 仕様書 | dev.mysql.com |
MYD の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。MYD ファイルについて最初の質問をしてみましょう。