본문 바로가기

Server Oriented/DB-Oracle

하나의 트랜잭션 안에서 sysdate 가 다른 값이 세팅될 수 있다..?

.java 에서 하나의 트랜잭션으로 최초와 마지막 insert 문에 sysdate 를 넣는 문장이 있고,

첫 insert 문장이 실행되고 마지막 insert 문장이 실행될 때 1초의 시차가 있었다면..

첫번째 insert 문장의 sysdate 항목과 마지막 insert 문장의 sysdate 항목은 1초의 차이가 난다.


그리고, 첫번째 insert 문장의 sysdate 가 마지막 insert 문장의 sysdate 항목 보다 빠르다고는 할 수 없다.

이것은 DBMS 가 어떻게 처리했느냐에 따라 다르다.

특히, DBMS 의 CPU 가 여럿이라면.. 병렬 처리의 폐해(?)가 적용될 수 있으므로 유의.


이를 동일 시각으로 맞춰주려면,

트랜잭션 초입에 sysdate 를 select 해서 그 값을 가지고 있다가,

매 문장에서 sysdate 대신에 최초에 select 했던 sysdate 값을 넣어주면 된다.


.Fine.


'Server Oriented > DB-Oracle' 카테고리의 다른 글

경품 추첨 DB 로직  (1) 2019.10.24
to_char(숫자,'fm90.0') 오라클 형식  (0) 2017.10.27
스크레치 복권 발급과 관련된 단상  (0) 2017.09.25
윤년 추출  (0) 2017.08.17
SQL 쿼리 튜닝  (0) 2017.08.17