MySQL (高度な、ストレージ エンジン)
(高度な 7 つの部分: ストレージ エンジン、インデックス [コア]、SQL 最適化、ビュー/ストアド プロシージャ/トリガー、ロック、innoDB エンジン、MySQL 管理)
-
MySQL アーキテクチャ
- 接続層: クライアント接続の処理、認証の処理、および操作の要求を処理します。
- サービス層: SQL インターフェイス、SQL 解析、SQL 最適化 (すべてのストレージ エンジン間操作はサービス層で処理されます)
- エンジン層 (プラグ可能、インデックス実装層)
- ストレージ層 (ストレージ関連データ、データインデックス、ファイル、ログ)
-
ストレージ エンジンの概要
-
ストレージエンジンの機能
高信頼性と高性能を考慮したユニバーサルストレージエンジン mysql5.5 以降、innoDB が mysql のデフォルトのストレージエンジンです。
-- 查看当前数据库支持的数据引擎 SHOW ENGINES; -- 创建表的时候指定存储引擎 create table xxx(......) engine = iniodb;
-
innoDB の特徴:
- DML (データの追加、削除、変更) オペレーションは ACID (原子性、分離、一貫性、耐久性) モデルに従い、トランザクションをサポートします。
- 行レベルのロック、同時アクセスのパフォーマンスを向上させる
- データの整合性と正確性を確保するための外部キーFOREIGN KEY 制約のサポート
-
書類
-
xxx.ibd (innoDB エンジンの各テーブルはこのテーブルスペースファイルに対応します) には、テーブル構造 (frm、sdi)、データ、およびテーブルのインデックスが格納されます。
-
パラメータ: innodb_file_per_table (mysql8.0 ではデフォルトで開き、テーブルスペースファイルに対応する各テーブルを識別します)
-- 查看表空间文件的开关 show variables like 'innodb_file_table';
- mysql データ ストレージ ディレクトリ:
C:\ProgramData\MySQL\MySQL Server 8.0\Data
には、現在のデータベースのテーブル構造、現在のデータベースに保存されているデータ、およびインデックスが保存されます。このファイルはバイナリであるため、直接表示できません。查看方式:ibd2sdi account.ibd
-
-
innoDB 論理ストレージ構造
- TableSpece: ibd ファイルなどのテーブルスペースには複数のセグメントが含まれています
- セグメント: セグメント。複数のエクステントが含まれます
- 範囲: 領域、複数のページを含む、領域サイズは固定 (1M には 16 ページを含めることができます)
- ページ: 複数の行 (ディスク操作の最小単位) を含むページ、ページ サイズは固定 (16K)
- 行: trxId、ロールポイント、col1、col2などを含む行
MyISAM は、mysql の初期のデフォルトのストレージ エンジンです。
- MyISAMの特徴
- トランザクションをサポートせず、外部キーをサポートしません
- テーブル ロックをサポートしますが、行ロックはサポートしません
- 高速アクセス
- 書類
- .MYDデータ
- .MYI インデックス
- .sdiテーブル構造(テキストファイルjson形式)
メモリ ストレージ エンジンはデータをメモリに保存しますが、ハードウェアまたは停電のため、これらのテーブルは一時テーブルまたはキャッシュとしてのみ使用できます。
-
メモリの特徴:
- メモリストレージ
- ハッシュインデックス (デフォルト)
-
書類
.sdi ストレージ テーブル構造 (データはメモリに保存されるため)
-
3 つのストレージ エンジンの違いは次のとおりです。
特徴 InnoDB マイISAM メモリ ストレージ制限 64TB 持っている 持っている トランザクションのセキュリティ サポート - - ロック機構 行ロック テーブルロック テーブルロック B+ツリーインデックス サポート サポート サポート ハッシュインデックス - - サポート 全文検索 サポート済み (バージョン 5.6 以降) サポート - スペースの使用量 高い 低い 該当なし メモリ使用量 高い 低い 中くらい バッチ挿入速度 低い 高い 高い 外部キーのサポート サポート - - -
-
ストレージエンジンアプリケーション
アプリケーション システムの特性に基づいて、適切なストレージ エンジンを選択します。複雑なシステムの場合は、実際の状況に応じて複数のストレージ エンジンを選択して組み合わせることができます。
- innoDB: トランザクション、外部キー、行ロックをサポートします。トランザクションの整合性と同時実行シナリオの一貫性に関する要件があります。
- MyISAM: 主にデータ読み取り操作と挿入操作が行われ、更新操作と削除操作はわずかで、トランザクションの整合性と同時実行性がそれほど高くない場合、このストレージ エンジンが適しています。ログ操作、電子商取引のフットプリント、コメント (非コア データ) など。 (モンゴDB)
- メモリ: メモリに保存され、アクセス速度が速く、一時テーブルおよびキャッシュとして長期的に使用されます。欠点は、テーブルのサイズが制限されていることです。大きすぎるテーブルはメモリにキャッシュできず、データのセキュリティが保証されません。 (レディス)