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 | +----------------+