본문 바로가기

Transaction

17. transaction isolation level DB에 {x=10, y=20}이 있을 때, Transaction1,2이 동시에 실행됐을 때 일어나는 현상을 살펴보자. 두 개의 트랜잭션이 nonserial(비순차적)으로 동시에 실행되고 있는 상황이다. 트랜잭션1에 대해 commit이 일어나서, x는 10에서 80으로 영구적으로 저장이 되었다. 그런데, 트랜잭션2에 대해 어떠한 종류의 에러가 발생을 하여 roll back이 실행이 되었을 때를 생각을 해보자. roll back의 실행에 의해, 트랜잭션2가 시작되기 이전의 상태, 즉 y=20으로 데이터를 복구하게 된다. 근데, DB에 저장된 x의 값 80은 read(x)에 얻은 10과 트랜잭션2 유효하지 않은 write(y)의 결과값인 70을 더하여서 나온 값이다. 이 유효하지 않은 Operation인 wr.. 더보기
14.Transaction Transaction 우선 예제를 한 번 보자!! 위 2개의 SQL문이 모두 정상적으로 실행이 완료되야 지만 이체라는 것이 성립된다. 그런데 만약 2개의 SQL문 중 어느 1개만 정상적으로 실행된 경우에는 어떻게 되버릴까?? 아래에서 살펴 보자!!! 이렇게 되면 J는 100만원 그대로가 되고, H는 200만원에서 220만원이 된다. 갑자기 없던 20만원이 H에게 생겨버렸다. 이렇게 되면, J는 100만원에서 80만원으로 바뀌고, H는 200만원이 그대로 있다. 원래 있던 20만원이 증발해버렸다. 이와 같이 이체라는 작업은, 이 2개의 SQL문이 모두 실행이 돼야 하는 작업이다. 그럼 SQL문을 사용하여 Transaction을 구현해보자 START TRANSACTION RDBMS에게 이제 TRANSACTI.. 더보기
11. stored Procedure PART 1 Stored Procedure 프로시저와 함수의 차이를 알고 가자!!!(이 부분이 이해 안 돼도 괜찮다. 아래 부분에서 자세히 다시 다룬다.) CREATE PROCEDURE product (IN a int, IN b int, OUT result int) IN : INput 매개변수라는 뜻. 즉 매개변수에 값을 받을 수 있을 뿐, BODY 부분에서 그 변수의 값을 변경하지는 못함. OUT : OUTput 매개변수라는 뜻. 즉, 매개변수에 어떤 값을 받을 필요는 없고, BODY 내에서 그 변수에 값을 넣어서 반환시킬 때 사용! (나중에 배울, INOUT이라는 키워드는 위 2가지 기능을 모두 가지고 있다.) -> 만약, 매개 변수 앞에 IN, OUT 중 어느 것도 적혀져 있지 않으면, default로 IN이 .. 더보기