격리성: 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다
동시에 여러 개의 트랜잭션들이 수행될 때, 각 트랜젝션은 고립되어 있어 연속으로 실행된 것과 동일한 결과를 나타낸다.
격리수준: 트랜잭션이 동시에 동일한 테이블/레코드에 접근할 때 적용하는 규칙
https://goodbyeanma.tistory.com/23
Read Uncommitted
가장 낮은 수준의 격리 수준
커밋 되지 않은 데이터에 접근가능
데이터 안정성이 낮고, 성능이 높음
데이터를 읽을 때 커밋되지 않는 변경사항(dirty reads) 발생 (즉, 아직 커밋되지 않은 상태의 데이터도 읽을 수 있음)
Read Commited
커밋 된 데이터에만 접근가능
가장 많이 사용하는 격리 수준
Non-Repeactable Read 현상 발생 : 동일한 트랜잭션 안에서 동일한 쿼리의 결과가 다른 경우가 발생함
Repeatable Read
동일한 트랜잭션에서는 한 쿼리의 값은 항상 일정함
Phantom Read 현상 발생 : 데이터 변경은 불가, 추가 삭제는 가능
백업이나 복제같은 긴 시간동안 동작하는 트랜잭션에서 안정적으로 실행해야할 때 사용
Serializable (직렬화가능한)
두 개의 트랜잭션이 동시에 수행 x
데이터 안정성이 높고, 성능이 낮음
mysql> show variables like '%isolation%';
mysql> set tx_isolation=’READ-COMMITTED’;
mysql> show variables like '%isolation%';