2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

MySQLのトランザクション分離レベルを確認しようとしたころ、MySQLのバージョンによって確認方法に差がありました。

まずは確認のためのコマンドを安易にグーグル検索したところ、

mysql> SELECT @@global.tx_isolation, @@session.tx_isolation;

というのがすぐに見つかったので実行してみます。

すると、

ERROR 1193 (HY000): Unknown system variable 'tx_isolation’

エラーが出る。そんなシステム変数は無いらしい。

次に見つかったコマンドも打ってみます。

mysql> SHOW VARIABLES LIKE 'tx_isolation';

するとやはり、

Empty set (0.01 sec)

何も見つからない。

試しにワイルドカードを使用すると

mysql> SHOW VARIABLES LIKE '%isolation%';

今度はちゃんと見つかりました。

+-----------------------+-----------------+
| Variable_name         | Value           |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)

変数名がtx_isolationではなく、transaction_isolationでした。

ちゃんと調べたところ、MySQL 5.7のドキュメントに記載があります。

Note
transaction_isolation was added in MySQL 5.7.20 as a synonym for tx_isolation, which is now deprecated and is removed in MySQL 8.0.
Applications should be adjusted to use transaction_isolation in preference to tx_isolation.

「transaction_isolation は MySQL 5.7.20 で tx_isolation の同義語として追加されましたが、現在では非推奨となり MySQL 8.0 で削除されました。
アプリケーションは、tx_isolationよりもtransaction_isolationを優先して使用するように調整する必要があります。」(機械翻訳)

ということでMySQLのバージョン8からは、SELECT @@global.transaction_isolation, @@session.transaction_isolation が使えます。

mysql> SELECT @@global.transaction_isolation, @@session.transaction_isolation;
+--------------------------------+---------------------------------+
| @@global.transaction_isolation | @@session.transaction_isolation |
+--------------------------------+---------------------------------+
| REPEATABLE-READ                | REPEATABLE-READ                 |
+--------------------------------+---------------------------------+

ちなみにMySQLのバージョンはSELECT version() で確認できます。
mysql> SELECT version();
+-----------+
| version() |
+-----------+
| 8.0.28    |
+-----------+

まとめ

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

ver5.7までは

mysql> SELECT @@global.tx_isolation, @@session.tx_isolation;

ver8.0からは

mysql> SELECT @@global.transaction_isolation, @@session.transaction_isolation;

ということでした。

参考

MySQL 5.7 Reference Manual
MySQLのautocommitとトランザクション分離レベルのメモ

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?