1アクションのロック機構
1 トランザクション間の分離を確実にします。しかし、また、データの一貫性を確保します。 2 リソースが競合ないことを確実にします。ロックは、リソースではなく、トランザクションの機能の一部です。 3回の各トランザクションは、保留リソースにロックを適用する必要がある、リソースを必要とします。
ロックの2種類
メモリーロック:ミューテックス、ラッチ、リソースを交換してはならない、データ・ページ・メモリの競合ではないことを確実にします。
オブジェクトのロック:
MDL(メタデータロック):メタデータを修正します。DDL - > ALTER、バックアップ
TABLE_LOCK:ロック・テーブル、DDL、バックアップ(FTWRLグローバル・ロック・テーブル)、読み取りT1ロックテーブルはまた、テーブルロックにアップグレードすることができます。
レコード(行)ロック:ラインロック、インデックス・ロックは、クラスタ化インデックスをロックします。
GAP:ギャップロック、RRレベル、通常のインデックスギャップ補助ロック。
次ロック:次のキーロック、GAP +レコードロック、通常のロックの二次インデックス
オブジェクトロック粒度:
MDL(メタデータロック)メタデータを修正します。DDL - > ALTER、バックアップ
TABLE_LOCK:ロック・テーブル、DDL、バックアップ(FTWRLグローバル・ロック・テーブル)、読み取りT1ロックテーブルはまた、テーブルロックにアップグレードすることができます。
レコード(行)ロック:ラインロック、インデックス・ロックは、クラスタ化インデックスをロックします。
GAP:ギャップロック、RRレベル、通常のインデックスギャップ補助ロック。
次ロック:次のキーロック、GAP +レコードロック、通常の二次インデックスはロック範囲
機能分類:
IS:意図共有ロック、テーブルレベル
S:ロックを読み取る共有ロック、行レベル
意図排他ロック、テーブル・レベル:IXを
X:排他的ロック、ライトロックラインレベル
一貫性の問題のC 3 ACID特性
A:アトミック、UNDO、REDO
D:永続、やり直し(WAL)
I:分離、分離レベル、ロック、MVCC(UNDO)が
C:データの状態が完全で一貫性があり、中および後に、前の作業保証A。
Cの特徴すべてのように一貫性を確保するために、すべてのものの上にあります。
一貫性を書く:UNDO、REDOは、LOCKは
一貫性をお読みください。ISOLATIONレベル、MVCC(UNDO)
データページの一貫性:
ダブルライトバッファ(ディスク領域)に
表領域のInnoDBのバッファ上の二重書き込みが128ページ(ゾーン2)サイズです2メガバイトです。
最初の使用はmemcopyは、二重書き込みバッファメモリにダーティデータをコピーする場合、MySQLはデータファイルにダーティデータをフラッシュしますと、部分ページ書き込みの問題を解決するために
後の二重書き込み2回で再びバッファ、1メガバイトを書くたびに、テーブルを共有しましたスペース、およびその後すぐに、fsyncを関数を呼び出し
、書かれた順番を二重書き込み、その過程で、バッファによって引き起こされる問題を回避するために、ディスクへの同期オーバーヘッドが二重書き込み、書き込みが完了した後、大規模ではない、
その後、二重書き込みバッファは、それぞれが書かれていますテーブルスペースファイルは、その後、個別の書かれました。
だから、通常の状況下では、MySQLは2倍のデータ・ページ、ディスクへの書き込みを書くときに、最初のパスがバッファ二重書き込み書かれています、
二重書き込みバッファからの二回目は、実際のデータファイルに書き込まれます。InnoDBは再び起動した後、極端な場合(停電)が発生した場合は、
データのページが破損していた、あなたは二重書き込みバッファからデータを回復することができます。
4.ストレージエンジンのコアパラメータ
1. innodb_flush_log_at_trx_commit = 1/0/2
二重標準のいずれかのREDOログ書込みパラメータはブラシ
2 innodb_flush_method = FSYNC / O_DIRECT / O_DIRECT / O_SYNC
OSかどうか書き込み制御MySQLのディスクブラシ、キャッシュ:アクションを
:FSYNCモード
プールのバッファあなたがディスクに書き込まれ、その後、OSのキャッシュを通過する必要があり、ディスクへのデータ書き込み
、ディスクへの書き込み、あなたはOSのキャッシュを通過する必要がある場合のREDOバッファデータ、そしてディスクに書き込ま
O_DSYNC:
バッファディスクへの書き込みデータのプール、あなたがする必要がありますディスクに書き込まれた後、経験のOSのキャッシュ、および
ディスクに直接書き込まれたときにキャッシュOS間で、ディスクへの書き込みのREDOバッファデータ
O_DIRECT:
バッファディスクへの書き込みデータのプールキャッシュOSの間で、ディスクに直接書き込む
のやり直しバッファディスクに書き込まれた後、あなたはOSのキャッシュを通過する必要がある場合、ディスクへのデータ書き込み、及び
生産は、好ましくは、ソリッドステートディスクで、O_DIRECTをお勧めします。
3.innodb_buffer_pool_size
効果:データバッファの合計サイズ。データページとインデックスページをバッファリングします。MySQLはメモリの最大領域です。
デフォルト:128M
公式勧告:物理メモリの80〜90%
の生産提案:75%以下、オンデマンドの展開
SET GLOBAL innodb_buffer_pool_size = 402653184;
MySQLの>ショーエンジンInnoDBのステータス\ G