innodbのトランザクション分離レベルの設定方法

InnoDBのトランザクション分離レベルを設定するには、次の手順を使用します。

  1. MySQLデータベースサーバに接続する。
  2. 次のコマンドを実行して、現在のトランザクション分離レベルを表示する
SELECT @@tx_isolation;
  1. トランザクションが要求するアイソレーションレベルを設定します。一般的なトランザクションアイソレーションレベルには以下があります。
  1. READ UNCOMMITTED (リードアンコミテッド):トランザクションが、コミットされていないデータの変更を読み取れることで、ダーティリード、ノンリピータブルリード、ファントムリードの問題が生じる可能性があります。
  2. リードコミット(read committed):トランザクションがコミット済データを読み取ることが許可されており、ダーティリードの問題は避けられますが、それでも非繰り返し読み込みとファントム読み込みの問題が発生する可能性があります。
  3. 同一データの複数回読み込み時も一貫性が保たれる。ダーティリードや非反復読取りは回避できるが、ファントムリードが発生する可能性がある。
  4. シリアライズ(SERIALIZABLE):最も高い分離レベルで、トランザクション間の完全な分離が保証され、ダーティリード、ノットリピータブルリード、ファントムリードの問題がなくなりますが、並行処理性能が低下する可能性があります。
  1. トランザクション分離レベルの設定を実行する次のコマンド:
SET GLOBAL tx_isolation = '级别';

ここで、「レベル」とは、’READ COMMITTED’など、設定されるトランザクションの分離レベルのことです。

  1. 手順 2 のコマンドを再度実行することで、トランザクション分離レベルの設定が成功していたか検証できます。

InnoDBのトランザクション分離レベルを変更した場合は、新規開始されるトランザクションには新しい分離レベルが適用されますが、すでに存在するトランザクションには影響しません。

bannerAds