MySQLのシステムアーキテクチャ
その他
2020-03-30 00:54:40
訪問数: null
MySQLのシステムアーキテクチャ
- 第1層は認証クライアントに接続され、C / Sアーキテクチャは、これを持っています
- 第二の層は、サーバー層でのMySQLのコアサービスのほとんどが含まれています
- 第3の層は、APIを介してサーバと通信するストレージエンジン、APIを避け差ストレージエンジンは、異なるストレージエンジンは、SQL(InnoDBの例外を解析するために、追加のストレージ・エンジンなしで相互に通信しないであろう、それは外部キーを解析含みます定義、サーバー自体がこの機能を実装していないため)
1.1接続の管理とセキュリティ
- 各クライアントは、サーバ・プロセス内のスレッドを持っています
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