ホームページ  >  記事  >  データベース  >  [MySQL] MVCC マルチバージョン同時実行制御によって実装されたトランザクション

[MySQL] MVCC マルチバージョン同時実行制御によって実装されたトランザクション

little bottle
little bottle転載
2019-04-16 11:33:133177ブラウズ

マルチバージョン同時実行制御 マルチバージョン同時実行制御である MVCC は、同時実行制御方式です。通常、データベースへの同時アクセスを実現するためにデータベース管理システムで使用され、プログラミング言語でトランザクション メモリを実装します。

1. 統一された実装標準はなく、ノンブロッキングの読み取り操作が実現され、書き込み操作は必要な行のみをロックします
2. ある時点のデータのスナップショットを保存することで実装
3. 代表的なものには、オプティミスティック同時実行制御とペシミスティック同時実行制御が含まれます。
4. Innodb の mvcc には、トランザクションごとにバージョン番号が増加します。レコードの各行の後に隠しフィールドの 2 列を追加することで、2 つの列はそれぞれバージョンの作成になります。番号とバージョン番号を削除するには、それを操作するトランザクションのバージョン番号を保存します
5。トランザクションでの追加、削除、変更、およびクエリは、2 列のバージョン番号フィールドを操作します。

挿入すると、新しく挿入された各行の現在の値 トランザクションのバージョン番号を行作成バージョン番号フィールドに追加します。
update 新しい行を挿入して現在のトランザクション作成バージョン番号を保存し、元の行データの削除バージョン番号をこのバージョン番号に変更します。トランザクション
delete 行削除のバージョン番号フィールドを変更します。このトランザクションのバージョン番号については、
select バージョン番号フィールドが現在のトランザクション バージョン以下であるデータを作成するクエリを選択します。このトランザクションの前にレコードが存在することを確認するか、このトランザクションによって新しく挿入される
存在しないバージョン番号フィールドを削除するクエリ、または現在のバージョンより大きいデータにより、このトランザクションの前にレコードが削除されていないことが保証されます

6。このような設計では、ロックは必要なく、読み取りと操作のパフォーマンスは良好ですが、追加の記憶域スペースが必要です。
7 .mvcc は、REPEATABLE READ と READ COMMITED の 2 つの分離下でのみ機能します。READ UNCOMMITED は常に最新のデータを読み取ります。SERIALIZABLE は、読み取られたすべての行をロックします

[推奨コース: mysql ビデオ チュートリアル]

以上が[MySQL] MVCC マルチバージョン同時実行制御によって実装されたトランザクションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。