트랜잭션 격리수준(transaction isolation)

MariaDB에서 사용할 수 있는 트랜잭션 격리수준(transaction isolation)은 4가지인데, 기본은 "REPEATABLE READ"이다.

"REPEATABLE READ" 격리수준은 트랜잭션이 처음 시작했던 시점의 데이터를 계속 동일하게 보여주는 방식이다. (SELECT 버전을 보장하기 위해 SNAPSHOT을 이용한다.)

SELECT 쿼리도 트랜잭션 범위 안에서만 작동하는 것으로 판단하기 때문에 COMMIT 이나 ROLLBACK으로 트랜잭션을 마무리 짓기 전에는 다른 트랜잭션에서 데이터를 변경하고 COMMIT을 해도 항상 동일한 결과를 반환한다. 즉, "A"쓰레드에서 데이터를 변경하고 COMMIT을 했더라도 "B"쓰레드에서는 COMMIT 이나 ROLLBACK을 하기 전까지는 "A"쓰레드에서 변경한 데이터를 확인할 수 없다. (이를 위해서 UNDO를 사용한다)

일반적으로 Oracle DBMS에 익숙한 사용자를 위해서는 "READ COMMITTED"를 사용하는 것이 좋다. "READ COMMITTED"는 트랜잭션에서 데이터를 변경하고 COMMIT을 하면 다른 쓰레드에서도 데이터를 조회할 수 있기 때문이다.

  • 트랜잭션 격리 수준 확인 방법
mysql> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value            |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+

results matching ""

    No results matching ""