MySQLのシステムアーキテクチャ

MySQLのシステムアーキテクチャ

絵

  • 第1層は認証クライアントに接続され、C / Sアーキテクチャは、これを持っています
  • 第二の層は、サーバー層でのMySQLのコアサービスのほとんどが含まれています
  • 第3の層は、APIを介してサーバと通信するストレージエンジン、APIを避け差ストレージエンジンは、異なるストレージエンジンは、SQL(InnoDBの例外を解析するために、追加のストレージ・エンジンなしで相互に通信しないであろう、それは外部キーを解析含みます定義、サーバー自体がこの機能を実装していないため)

1.1接続の管理とセキュリティ

  • 各クライアントは、サーバ・プロセス内のスレッドを持っています
  • サーバーは、スレッドにそれぞれの新しい接続を作成または破棄する必要はありません(5.5以降は、スレッドプールを提供し、あなたは多数の接続にサービスを提供するスレッドの少量を使用することができます)、スレッドをキャッシュする責任があります

  • 元のホストが認証のためのユーザー名に基づいてサーバーのアクセス許可、およびパスワード情報クライアント、接続が成功するには、特定の動作を確認します。

1.2最適化と実行

  • MySQLは、クエリを解決する内部データ構造(パースツリー)を作成し、その様々な最適化されます(適切なインデックスを選択し、テーブルの読み取り順序を決定するためにクエリを書き直します)
  • ユーザーは、特別なキーワードの候補(ヒント)を介して最適化し、意思決定プロセスのMySQLのに影響を与えることができます。オプティマイザは、構成を変更し、最適化プロセスは、ユーザクエリと再構成スキーマの要素を解釈(EXPLAIN)を要求することができます
  • オプティマイザは、テーブルが使用するストレージエンジンを気にしませんが、ストレージエンジンは、影響を受けたクエリを最適化します。オプティマイザエンジンは、オーバーヘッド情報記憶容量を要求する、または特定の動作は次のように統計データテーブルとなっている提供します。
  • SELECT文の場合、クエリを解決する前に、サーバはクエリキャッシュ(クエリキャッシュ)をチェックします。

2.同時実行制御

同時実行制御の二つのレベル:サーバー層とストレージ層エンジン

2.1読み書きロック

  • 共有ロック(共有ロック)、読み取りロック(読み取りロック):共有は、お互いをブロックしません
  • 排他ロック(排他ロック)、書き込みロック(書き込みロック):排他(ブロック他の読み書きロック)

2.2ロックの粒度

  • 共有リソースの同時実行を提供する方法:ロックオブジェクトは、より選択してみましょう。データのみのデータ\一部を変更する必要がある部分をロックしてみてください、データのより少ない量は、同時実行のより高度をロックします。
  • 様々なオペレーティング・ロック(ロックはロックが解除されているかどうかをチェックして、ロックが解除される)リソースを消費する必要があります。
  • ロック戦略:
    • ロックテーブル(テーブルロック):
      • 最も基本的な、最小のオーバーヘッド戦略。サーバー層の実装
      • テーブル全体をロックします。他のロックをブロック書き込みロックは、ロックを読んで、目詰まりしません。
      • 特定のシナリオの下では、テーブルロックにも優れた性能を有することができます。表READ LOCALロックとして同時書き込み操作の特定の種類をサポートしています。書き込みロックは読み取りロックは、読み取りロックキューの先頭に挿入することができるよりも優先度が高いです。
      • ストレージエンジンは、独自のロックを管理することができ、サーバー層は、まだ異なる目的を達成するために有効なロックテーブルの様々なを使用します。ストレージエンジンロック機構を無視して、例えば、サーバは、ALTER TABLE文などのテーブルロックを使用します。
    • 行レベルロック(行ロック):
      • 並行処理のサポートを最大化するために、それはまた、最大のロックのオーバーヘッドをもたらします。
      • 唯一のストレージエンジンに(InnnoDBとXtraDB、等)を実現します

3.トランザクション

  • トランザクションは、アトミックSQLクエリのセット、または仕事のスタンドアロンユニットです。
  • トランザクションのACID:
    • アトミック(atomicty):ワークの最小不可分単位。
    • 一貫性(整合性):データベースからの遷移は、常に別の一貫した状態に一貫性のある状態です。
    • 絶縁(アイソレーション):最終提出する前に変更を加えるためにしっかりと、他のトランザクションは表示されません。
    • 持続性(耐久性):トランザクションのコミット後に、それは永久的なデータベースに保存されます作られた変更します。(戦略の連続継続の無100%保証) 

おすすめ

転載: www.cnblogs.com/huxuanjing/p/12596055.html