コミットmysqlの物事の分離レベル読み取り(コミット読み取り)、反復可能読み取りは、デモの差(再読み込みすることができます)

mysqlの4つの分離レベルがあり
READ UNCOMMITTED(非コミット読み取り)
       この分離レベルでは、すべてのトランザクションが他のコミットされていないトランザクションの結果を見ることができます。その性能ははるかに良い他のレベル以上ではないので、この分離レベルはほとんど、実際には使用されません。コミットされていないにもダーティリード(ダーティ・リード)と呼ばれるデータを読み込みます。


読み取り(コミット読み取り)コミット
       ほとんどのデータベースシステムのデフォルトの分離レベル(MySQLのではなく、デフォルト)です。それは、分離の簡単な定義を満たす:トランザクションが唯一の変化は、企業が行う提出されている見ることができます。新しいので、コミットがあるかもしれません、その間プロセスの例では、同じトランザクションの他のインスタンスが同じで異なる結果を返すことが選択しているため、この分離レベルはまた、非反復可能読み取り(反復不能読み取り)、いわゆるサポートしています。


反復可能読み取り(再読み込みすることができます)
       これはデフォルトのMySQLのトランザクション分離レベルで、それは同時の時点で同じトランザクションの複数のインスタンスがデータを読み込み、あなたは同じデータ行を参照するようになります。マジック読書(ファントムリード):しかし、理論的には、それは別の厄介な問題につながります。簡単に言えば、ファントムは、ユーザーがデータ行の範囲を読み込むときというの手段を読んで、他のトランザクションとユーザーがデータ行の範囲を再読み込みする場合、範囲内の新しい行を挿入、あなたは「新しいを見つけるだろうファントム「行。この問題を解決するために、マルチバージョン同時実行制御(MVCC、マルチバージョン同時実行制御)機構を介してのInnoDBとファルコンストレージエンジン。


直列化(直列化可能) 
       これは問題ファントムリードを解決するように、互いに競合することは不可能にするために、それを強制することにより、最高の分離レベル、トランザクションの順序です。要するに、それは、読み取られたデータの各行の共有ロックを追加することです。このレベルでは、タイムアウトやロック競合の多くにつながる可能性があります。

この論文の主な違いは、読み取りコミット実証(コミット読み取り)および反復可能読み取り(再読み込みすることができます)

テーブルtを作成します。

CREATE TABLE `t` (
  `id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `t`(`id`) VALUES (1);

そして、実証2つのSQLコードを添付

# 1  查看表中的数据
SELECT * FROM t;

# 2 mysql默认事物隔离级别是可重复读
SHOW VARIABLES LIKE '%tx_isolation%';

# 3 开始事物,并读取表中的数据
BEGIN;
SELECT * FROM t;

#执行另一个标签中的步骤4

# 5 此时不能读取到步骤4插入的数据(跟上一条sql语句的查询结果一样)
SELECT * FROM t;

# 6
COMMIT;

# 7 事物后提交,能读取到步骤4插入的数据了
SELECT * FROM t;


# 8 将事物隔离级别改成读已提交
SET tx_isolation='read-committed';
SHOW VARIABLES LIKE '%tx_isolation%';

# 9
BEGIN;
SELECT * FROM t;

#执行另一个标签也中的步骤10

# 11 此时能读取到步骤10插入的数据。同一个事物中读取两次,两次的结果可能不一样
SELECT * FROM t;

# 12
COMMIT;

# 13 还原事物隔离级别
SET tx_isolation='REPEATABLE-READ';
SHOW VARIABLES LIKE '%tx_isolation%';

# 4
BEGIN;
INSERT INTO t(id) VALUE(2);
COMMIT;

# 10
BEGIN;
INSERT INTO t(id) VALUE(3);
COMMIT;

場合は、物事デフォルトの分離レベル反復可能読み取り。ステップ3、ステップ5はすでに、同じことを始めるが、中にコミットしませんでした。ステップ5は読み取ることができない挿入ステップ4。

変更物事レベルが読むすでに、同じことを始め、ステップ9、ステップ11をコミットしているが、中にコミットしませんでした。ステップ11は、読むことができる 10個のデータ挿入ステップ。

 

公開された51元の記事 ウォン称賛14 ビュー40000 +

おすすめ

転載: blog.csdn.net/u010606397/article/details/93164472