MySQL/MariaDB 의 트랜잭션 격리 수준(transaction isolation level) 확인하기

TL;DR

MySQL 콘솔에서 다음 시스템 변수를 조회하면 전역 "트랜잭션 격리 수준"을 확인할 수 있습니다.

mysql> SELECT @@global.tx_isolation;

+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| READ-COMMITTED        |
+-----------------------+


개요

트랜잭션 격리 수준은 DBMS 를 잘 사용하기 위해서는 꼭 이해해야 하는 설정입니다.

저도 MySQL 의 격리 수준을 확인해야 하는 경우가 있는데 stackoverflow 에 좋은 글이 있어서 나중에 활용하기 위해 정리해 봅니다.

InnoDB 의 기본 격리 수준은 "REPEATABLE READ" 입니다.


확인 방법

MySQL 설정 확인

설정 파일에서 transaction-isolation 항목을 찾아서 확인하면 되며 이 항목은 mysqld 나 server 엔트리에 있습니다.

격리 수준은 커맨드라인이나 전역, 또는 세션에서도 설정할 수 있으므로 설정 파일만 확인해서는 안됩니다.

[mysqld]
transaction-isolation = REPEATABLE-READ

커맨드라인

MySQL 을 실행할 때 명령행에서 다음 옵션을 추가해서 격리수준을 설정할 수 있지만 이 방법은 보통 사용하지 않으며 권장하지도 않습니다.

--transaction-isolation=READ-COMMITTED


전역 설정 확인

MySQL 콘솔에서 global.tx_isolation 시스템 변수를 조회하면 전역 "트랜잭션 격리 수준"을 확인할 수 있습니다.

mysql> SELECT @@global.tx_isolation;

+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| READ-COMMITTED        |
+-----------------------+

세션 설정 확인

MySQL 콘솔에서 tx_isolation 을 조회하면 전역 "트랜잭션 격리 수준"을 확인할 수 있습니다.

mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+



같이 보기



Ref