繰り返し不可能な読み取りを解決するための Mysql の方法: mvcc マルチバージョン同時実行制御が使用されます。mvcc は、各データの後に 2 つの隠し列、つまり作成バージョン番号と削除バージョン番号を使用します。各トランザクションはそこにあります。先頭には常に増分バージョン番号が付きます。
[関連する学習の推奨事項: mysql の学習]
Mysql の非反復読み取りを解決する方法:
mysql では、デフォルトのトランザクション分離レベルは反復可能読み取り (反復可能読み取り) です。非反復読み取りを解決するために、innodb は次を使用します。この問題を解決するのが mvcc (複数バージョン同時実行制御) です。
mvcc は、各データの後に 2 つの非表示列 (バージョン番号の作成とバージョン番号の削除) を使用します。各トランザクションの先頭には増分バージョン番号が付きます。
新機能:
insert into user (id,name,age)values(1,"张三",10);
更新:
update user set age = 11 where id = 1;
更新操作は削除追加によって実装されます。まず、現在のデータを削除としてマークします。
そして、新しいデータを追加します:
Delete: 削除操作は次のとおりです。削除されたデータのバージョン番号を現在のトランザクションのバージョン番号に直接更新します。
delete from user where id = 1;##Query 操作:
select * from user where id = 1;Query 操作は回避するためのものです。古いクエリを実行するにはデータまたは他のトランザクションによって変更されたデータの場合は、次の条件を満たす必要があります: 1. クエリ中の現在のトランザクションのバージョン番号は、作成バージョン番号
以上である必要があります。
2. クエリ 現在のトランザクションのバージョン番号は、削除されたバージョン番号より小さい必要があります。つまり、create_version これにより、トランザクションのクエリを回避できます。他のトランザクションによって変更されたデータ以上がmysqlでのNon-repeatable readを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。