# Repeatable read

[PostgreSQL] Repeatable Read, Serializable 테스트 방법
테스트 테이블 초기화 프로시저 먼저 테스트 테이블 초기화 프로시저를 생성합니다. 테스트 방법 이후에는 서로 다른 세션을 사용하는 query console 2개를 구동시키고, 그리고 나서 2개의 query console 에 각각에 Tx1 query console, Tx2 query console 목차의 내용을 Tx1 한줄 실행, Tx2 한줄 실행, Tx1 한줄 실행, Tx2 한줄 실행... ... 반복 ... 이런식으로 계속 진행하면 됩니다. 다만 중간중간 test1, test2: 으로 각 테스트를 구분했는데요, 각 테스트가 끝날 때마다 call testtablereset() 를 호출하여 테스트 테이블을 초기화해야 합니다. Tx1 query console Tx2 query
격리성 수준과 발생하는 문제
.o { color: #CD853F; } .b { color: #5F9EA0; } 들어가기전에.. 예제의 편의를 위해 위와 같은 약어를 사용하겠다. 오늘 하루동안 격리성 수준을 이해하기 위해 부단히도 애를 먹었다. 아직까지 전부 제대로된 이해를 하진 못했지만, 이 부분은 코드를 직접 작성하면서 경험을 하면서 익혀나가야 할 것 같다. 많이 부족해보일 수도 있겠지만, 이거 한번 이해해보려고 발버둥 쳤던 기록을 남기고 싶어서 이 글을 작성한다. READ UNCOMMITTED 가장 낮은 단계의 격리수준이다. Commit 되지 않은 데이터를 읽을 수 있다. 이 단계에서는 Dirty Read라는 데이터 일관성이 깨지는 문제가 발생하기 때문에 거의 모든 RDBMS에서는 사용하지 않는다. Dirty Read - Case 1 Dirty Read란, 트랜잭션 A가 진행되는 도중에 트랜잭션 B가 그 값을 변경하는 경우
트랜잭션
트랜잭션이란? DBMS에서 데이터를 다루는 논리적인 작업의 단위 보통 단일 SQL문을 사용하기도 하지만, 여러개의 SQL문을 순차적으로 수행하여 다루기도 한다. 트랜잭션을 이용하는 이유 데이터베이스에서 장애가 일어나는 경우, 데이터를 복구하는 작업의 단위로 사용할 수 있다. 데이터베이스에서 여러 작업이 동시에 같은 데이터를 다룰 경우에 작업을 분리하는 단위로 트랜잭션을 사용할 수 있다. 트랜잭션 문법 트랜잭션은 "TODO에 해당하는 쿼리를 '모두 실행시키거나', '모두 실행시키지 않게' 한다." 트랜잭션의 성질 원자성(Atomicity) : 트랜잭션에 포함된 작업은 "전부 수행되거나", "전부 수행되지 않아야 한다." 트랜잭션 수행중 오류가 발생할 경우, 회복(Recovery) 알고리즘을 통해 변경한 내용을 취소한다. 일관성(Consistency) : 트랜잭션을 수행하기 전이나 수행한 후나 "데이터베이스는 항상

MS-SQL Repeatable read isolation level
Repeatable read 격리수준이 궁금해서 테스트 해봤습니다. 일단 테이블 만들구요. 아래와 같이 데이터가 담겨 있습니다. 먼저 세션1 에서, 아래처럼 조회가 되겠지요. SP