728x90
Transaction Isolation Level
MYSQL의 Transaction Isolation Level에는 READ UNCOMMITTED, READ COMMIITED, REPEATABLE READ, SERIALIZE 네 가지 종류가 있다.
READ UNCOMMITTED
1) COMMIT 되지 않은 데이터에 다른 트랜잭션에서 접근할수 있다.
2) INSERT, UPDATE, DELETE 후 COMMIT 이나 ROLLBACK에 상관없이 현재의 데이터를 읽어온다.
3) ROLLBACK이 될 데이터도 읽어올 수 있으므로 주의가 필요하다.
4) LOCK이 발생하지 않는다.
READ COMMIITED
1) COMMIT 된 데이터에 다른 트랜잭션에서 접근할 수 있다.
2) 구현 방식이 차이 때문에 Query를 수행한 시점의 데이터와 정확하게 일치하지 않을 수 있다.
3) LOCK이 발생하지 않는다.
4) MySQL에서 많은 양의 데이터를 복제하거나 이동할 때 이 LEVEL을 추천한다.
REPEATABLE READ
1) Default LEVEL이다.
2) SELECT시 현재 시점의 스냅샷을 만들고 스냅샷을 조회한다.
3) 동일 트랜잭션 내에서 일관성을 보장한다.(즉, 동시점에 다른 트랜잭션에서 추가된 행을 읽을 수 없다.)
4) record lock과 gap lock이 발생한다.
5) CREATE SELECT, INSERT SELECT시 lock이 발생한다.
SERIALIZE
1) 가장 강력한 LEVEL이다.
2) SELECT 문에 사용하는 모든 테이블에 shared lock이 발생한다.
728x90
Change Isolation Level : SET TRANSACTION Syntax
SET GLOBAL TRANSACTION transaction_characteristic | Global |
SET SESSION TRANSACTION transaction_characteristic | Session |
SET TRANSACTION transaction_characteristic | Next transaction only |
-- # Example#1 : Change to SERIALIZABLE
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- # Example#1 : Change to 'READ COMMITTED' of current session
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
/* SET TRANSACTION Syntax
SET [GLOBAL | SESSION] TRANSACTION
transaction_characteristic [, transaction_characteristic] ...
transaction_characteristic: {
ISOLATION LEVEL level
| access_mode
}
level: {
REPEATABLE READ
| READ COMMITTED
| READ UNCOMMITTED
| SERIALIZABLE
}
access_mode: {
READ WRITE
| READ ONLY
}
*/
Check Isolation Level
SELECT @@GLOBAL.transaction_isolation, @@GLOBAL.transaction_read_only;
SELECT @@SESSION.transaction_isolation, @@SESSION.transaction_read_only;
<참고 문서>
728x90
'Data Science > DB+SQL' 카테고리의 다른 글
[SQL]시계열데이터 분석 : 불연속적인 상태 변화값 분석 (0) | 2022.10.21 |
---|---|
[Mysql] Checking if a temporary table exists : 임시 테이블 존재여부 체크 (0) | 2022.09.06 |
[mysql] db backup & restore (0) | 2022.08.20 |
[MYSQL] Pivoting SELECT SQL ( Rows to Columns ) (0) | 2022.05.11 |
[MYSQL] 테이블의 인덱스 정보 조회 SQL (0) | 2021.11.03 |
최근댓글