ハイパフォーマンス MySQL 第 3 版学習ノート 第 1 章 MySQL のアーキテクチャと歴史

版:2013年5月初版

印刷時期:2020年11月第34刷

 

 

1.1 論理アーキテクチャ

  1. MySQL は大きく 3 つの層に分かれており、最上層は主に接続/スレッド処理のためにクライアントに接続され、第 2 層はクエリ分析/分析/最適化/キャッシュとすべての組み込み機能を含む MySQL のコア機能のほとんどが、第 3 層は主にストレージ エンジンです。
  2. MySQL はクエリ時にキャッシュの最適化を使用します。ページ 3

1.2 同時実行性の制御

  1. 同時実行の問題を解決する古典的な方法は、同時実行制御を使用することです。ここでは読み取り/書き込みロックが使用され、共有ロック (読み取り) および排他的ロック (書き込み) とも呼ばれます。読み取りロックは共有できますが、書き込みロックは共有できません (排他的)。
  2. ロックの粒度の問題は、ロックされたオブジェクトの選択性を高め、一部の領域をロックすることを指します。いわゆるロック戦略は、ロックのコストとデータのセキュリティの間のバランスを見つけることです。テーブル ロック (テーブル ロック) は MySQL の最も基本的なロック戦略であり、行レベルのロック (行ロック) は同時処理を最大限にサポートできます (最大のロック オーバーヘッドをもたらします)。

1.3 トランザクション

  1. ACID特性、原子性、一貫性、分離性、耐久性
  2. 4 つの分離レベル、READ UNCOMMITTED (ダーティ読み取りが表示されます)、READ COMMITED (デフォルト レベル、非反復読み取りとも呼ばれます)、REPEATABLE READ (ファントム読み取りが生成されます)、SERIALIZABLE (シリアル化可能、最高の分離レベル)
  3. ファントム リードを解決するには、InnoDB および XtraDB のマルチバージョン同時実行制御 (MVCC、Multiversion Concurrency Control) を使用して解決するか、SERIALIZABLE を使用して解決します。
  4. 複数のトランザクションが異なる順序でリソースをロックしようとすると、デッドロックが発生することがあります。デッドロックを解決するために、DBMS はさまざまなデッドロック検出およびデッドロック タイムアウト メカニズムを実装しています。詳細は 9 ページを参照してください。
  5. トランザクション ログにより効率が向上しますが、ディスクに 2 回書き込む必要があります (1 回目はログに書き込まれ、2 回目は実際にデータをデータベース ファイルに記録します)。

1.4 複数バージョンの同時実行制御

  1. MVCC は行レベル ロックの変形であると考えることができます。多くの場合、ロック操作は回避されます。実装メカニズムは異なりますが、ほとんどの場合、ノンブロッキング読み取り操作が実装され、書き込み操作は必要な行のみをロックします。
  2. MVCC の実現は、InnoDB の MVCC など、特定の時点でのデータのスナップショットを保存することです。これは、各行レコードの背後にある 2 つの非表示列を保存することによって行われます。1 つは行の作成時刻を保存し、もう 1 つは行の有効期限 (または削除時刻) を保存します。詳細については、13 ページを参照してください。

1.5 MySQL ストレージ エンジン

  1. テーブルを作成するとき、MySQL はデータベースのサブディレクトリにテーブルと同じ名前の.frmファイルを作成し、テーブルの定義を保存します。このファイルは渡すことができます。
    show table status like 'user' \g

    テーブルの関連情報を表示するには、各フィールドの説明については 14 ページを参照してください。

  2. InnoDB は、MySQL のデフォルトのトランザクション エンジンです。多数の短期トランザクションを処理するように設計されています。4 つの標準分離レベルを実装しています。デフォルト レベルは REPEATABLE READ で、ネクスト キー ロック戦略によってファントム読み取りを防ぎます。ギャップ ロックにより、InnoDB はクエリに含まれる行をロックするだけでなく、インデックス内のギャップをロックしてファントム行の挿入を防ぎます。

  3. MyISAM は、MySQL5.1 以前のデフォルトのストレージ エンジンです。トランザクションと行レベルのロックはサポートしていません。欠点は、クラッシュ後に安全に回復できないことです。読み取り専用データの場合、またはテーブルが比較的小さく、修復 (修復) 操作に耐えられる場合は、MyISAM エンジンを引き続き使用できます。 

  4. MyISAM は、テーブルを 2 つのファイル、データ ファイル ( .MYD) 、 インデックス ファイル ( .MYI )に保存します。その機能は、テーブル全体のロック、インデックスのサポート、遅延更新インデックス キーの設定 (Delayed Key Write)、およびテーブル圧縮 (領域占有とディスク IO の削減) です。

  5. MySQL には他にもストレージ エンジンがいくつか組み込まれています。詳細については 19 ページを参照してください。その中で、CSV エンジンとメモリ エンジンがより頻繁に使用されます。

  6. 適切なエンジンを選択することは非常に重要です。ほとんどの場合、InnoDB で問題ありません。選択する場合は、24 ページを参照してください。

1.6 MySQL タイムライン (29 ページ)

 

 

おすすめ

転載: blog.csdn.net/Mint2yx4/article/details/117328788