MySQL トランザクション分離レベルの表示と変更の例

MySQL トランザクション分離レベルの表示と変更の例

トランザクション分離レベルを確認する

MySQL では、'%tx_isolation%' などの show variables や select @@tx_isolation; ステートメントを通じて、現在のトランザクション分離レベルを表示できます。

現在のトランザクション分離レベルを表示するための SQL ステートメントと実行結果は次のとおりです。

mysql> '%tx_isolation%' のような変数を表示します。
+---------------+-----------------+
| 変数名 | 値 |
+---------------+-----------------+
| tx_isolation | 繰り返し読み取り |
+---------------+-----------------+
セット内1列、警告1回(0.17秒)
mysql> @@tx_isolation を選択します。
+-----------------+
| @@tx_isolation |
+-----------------+
| 繰り返し読み取り |
+-----------------+
セットに 1 行、警告 1 件 (0.00 秒)

結果は、MySQL の現在のトランザクション分離レベルが REPEATABLE-READ であることを示しています。

さらに、次のステートメントを使用して、それぞれグローバル トランザクション分離レベルとセッション トランザクション分離レベルを照会できます。

@@global.tx_isolation を選択します。
@@session.tx_isolation を選択します。

ヒント: MySQL 8.0.3 では、tx_isolation 変数は transaction_isolation 変数に置き換えられました。 MySQL 8.0.3 でトランザクション分離レベルをクエリするには、上記のクエリの tx_isolation 変数を transaction_isolation 変数に置き換えるだけです。

トランザクション分離レベルを変更する

MySQL には、単一セッションまたはグローバルにトランザクション分離レベルを変更できる SET TRANSACTION ステートメントが用意されています。構文の形式は次のとおりです。

[セッション | グローバル] トランザクション分離レベルの設定 {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

SESSION および GLOBAL キーワードは、変更されたトランザクション分離レベルの範囲を指定するために使用されます。

  • SESSION: 変更されたトランザクション分離レベルが現在のセッション (現在のコマンド ウィンドウ) 内のすべてのトランザクションに適用されることを示します。
  • GLOBAL: 変更されたトランザクション分離レベルがすべてのセッション (グローバル) のすべてのトランザクションに適用され、既存のセッションは影響を受けないことを示します。
  • SESSION と GLOBAL を省略すると、変更されたトランザクション分離レベルは、現在のセッションでまだ開始されていない次のトランザクションに適用されます。

どのユーザーでもセッションのトランザクション分離レベルを変更できますが、グローバル トランザクション分離レベルを変更できるのは SUPER 権限を持つユーザーのみです。

通常のユーザーを使用してグローバル トランザクション分離レベルを変更すると、この操作を実行するにはスーパー権限が必要であることを示すエラー メッセージが表示されます。SQL ステートメントと実行結果は次のとおりです。

C:\Users\leovo>mysql -utestuser -p
パスワードを入力してください: ******
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは41です
サーバーバージョン: 5.7.29-log MySQL コミュニティサーバー (GPL)
 
Copyright (c) 2000, 2020, Oracle およびその関連会社。無断複写・転載を禁じます。
 
OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。
 
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
 
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
エラー 1227 (42000): アクセスが拒否されました。この操作には SUPER 権限 (少なくとも 1 つ) が必要です。
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

例1

セッションおよびグローバル トランザクションの分離レベルを変更するには、SET TRANSACTION ステートメントを使用します。SQL ステートメントと実行結果は次のとおりです。

mysql> @@session.tx_isolation を選択します。
+------------------------+
| @@session.tx_isolation |
+------------------------+
| シリアル化可能 |
+------------------------+
セットに 1 行、警告 1 件 (0.00 秒)

mysql> グローバルトランザクション分離レベルを REPEATABLE READ に設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> @@global.tx_isolation を選択します。
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| 繰り返し読み取り |
+-----------------------+
セットに 1 行、警告 1 件 (0.00 秒)

set tx_isolation コマンドを使用して、現在のセッションのトランザクション分離レベルを直接変更することもできます。SQL ステートメントと実行結果は次のとおりです。

mysql> tx_isolation='READ-COMMITTED' を設定します。
クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.00 秒)

mysql> @@session.tx_isolation を選択します。
+------------------------+
| @@session.tx_isolation |
+------------------------+
| コミット読み取り |
+------------------------+
セットに 1 行、警告 1 件 (0.00 秒)

知識ポイント補足

MySQL トランザクション分離レベル読み取りコミット フローチャート

上記は、MySQLのトランザクション分離レベルの表示と変更の例の詳細内容です。MySQLのトランザクション分離レベルの表示と変更の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Mysql トランザクション分離レベルの読み取りコミットの詳細な説明
  • MySQL の 4 つのトランザクション分離レベルの詳細な説明
  • MySQL の 4 つのトランザクション分離レベルの詳細な説明と比較
  • MySQL トランザクション分離とパフォーマンスへの影響の詳細な分析
  • Innodb トランザクション分離レベルと MySQL のロックの関係に関するチュートリアル
  • MySQL データベースのトランザクション分離レベル (トランザクション分離レベル) の概要
  • MySQL InnoDB のロック機構の詳細な説明
  • MySQL のロックの仕組みと使用法の分析
  • MySQL トランザクション分離レベルとロックメカニズムの問題に関する深い理解

<<:  Dockerプライベートウェアハウスレジストリの導入

>>:  ノードイベントループにおけるイベント実行の順序

推薦する

Docker Swarm サービス オーケストレーション コマンドの詳細な説明

1. はじめにDocker には、タスクを構成する複数の Docker コンテナをオーケストレーショ...

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...

HTML テーブル マークアップ チュートリアル (37): 背景画像属性 BACKGROUND

テーブル ヘッダーの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できま...

Firefox ブラウザでバックグラウンド ミュージックを再生するための究極のソリューション (Chrome マルチブラウザ対応)

FirefoxでBGMを再生するための推奨コードがテストに合格しました空のコントロールパネルを開いて...

Dockerでリモートアクセスを有効にする方法

DockerデーモンソケットDocker デーモンは、 unix 、 tcp 、 fdの 3 種類の...

HTML 学習ノート - HTML 構文の詳細な説明 (必読)

1. HTML マークアップ言語とは何ですか? HTML は、Web ページの情報を表すマークアッ...

MySQL でよく使用されるデータベースとテーブル シャーディング ソリューションの概要

目次1. データベースのボトルネック2. サブライブラリとサブテーブル2. 横長テーブル3. 垂直サ...

CentOS 8 に Postfix メール サーバーをインストールして設定する方法

Postfix は、Linux システム上で電子メールをルーティングまたは配信するために使用される無...

Vue で変数式セレクターを実装する方法

目次HTML構造の定義入力タグのバインディング属性入力タグはキーダウンイベントをリッスンしますli ...

Linux でディスクをマウントし、起動時に自動的にマウントするように設定する方法

皆さんの時間は貴重だと承知しているので、プロセス コマンドを直接書き留めておきます。設定できます。原...

MySQLのストレージエンジンの詳細な説明

MySQL ストレージ エンジンの概要ストレージ エンジンとは何ですか? MySQL のデータは、さ...

backgroundImage を使用して画像カルーセルの切り替えを解決する詳細な説明

単一のDOMノードでカルーセルを実装するbackgroundImage を使用すると、複数の画像を追...

Nginx 仮想ホストの詳細な分析

目次1. 仮想ホスト1.1 仮想ホストの概念1.2 仮想ホストタイプ2. IP仮想ホストに基づく2....

MySQL 数千万のビッグデータに対するSQLクエリ最適化の知識ポイントのまとめ

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

HTML における水平および垂直の中央揃え方法の詳細な説明 (基礎)

序文馬を書いていたとき、水平方向と垂直方向の中央揃えの方法について、誰もあまり知らなかったと思います...