06-MySQLのロック機構

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

 

おすすめ

転載: www.cnblogs.com/metoyou/p/12363678.html