5

私は現在、さまざまな分離レベルに関して MySQL のパフォーマンスを特徴付ける必要がある学校のプロジェクトに取り組んでいます。READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、および SERIALIZABLE についてテストしました。ここで、スナップショット分離を使用してテストしたいと思います。

InnoDB で REPEATABLE READ のデフォルトを使用する場合、スナップショット分離が併用されることは理解していますが、分離レベルをスナップショット分離のみに設定することは可能ですか? どうすればいいですか?

4

3 に答える 3

8
于 2012-03-26T22:54:53.300 に答える
0

MySQL にはスナップショット分離レベルはありません。Consistent Nonlocking Readsにスナップショットを使用しますが、スナップショット分離をサポートしているわけではありません。

ウィキペディアのページによると、以下のデータベースのみがスナップショット分離をサポートしています。

スナップショット分離は、SQL Anywhere、InterBase、Firebird、Oracle、PostgreSQLMicrosoft SQL Server (2005 以降)など、いくつかの主要なデータベース管理システムで採用されています。

スナップショット分離では、

トランザクション自体は、そのスナップショット以降に行われた同時更新と競合する更新がない場合にのみ、正常にコミットされます。

しかし、REPEATABLE READレベルでは、スナップショットを使用していますが、これはまったく行われません。

于 2015-05-26T04:16:57.577 に答える
0

変数tx_isolationを使用して、トランザクション分離をローカルおよびグローバルに設定できます。

次のようにセッションで設定できます

SET tx_isolation = 'READ-COMMITTED';

グローバルに設定することもできます

SET GLOBAL tx_isolation = 'READ-COMMITTED';

ただし、それは今後の新しい DB 接続に影響します。現在のセッションで設定する必要があります

于 2012-03-26T23:14:41.863 に答える