일단 씻고 나가자
25.01.17 본문
2025. 01. 17 목요일
- [DB] lost update, write skew 차이?
: 둘 다 다른 트랜잭션의 결과 반영을 무시한다는 점에서 비슷하나,
lost update의 경우 하나의 데이터를 덮어쓰는 현상, write skew의 경우 하나의 데이터 및 연관된 데이터들을 포함하여 제약 사항(데이터 정합성) 및 비즈니스 규칙을 위배하는 현상이라는 점에서 차이가 있다.
예를 들어, 두 개의 트랜잭션이 read(A) write(A)를 하나의 operation씩 번갈아 가면서 실행한다면 마지막 write의 값만 반영되고, 이는 lost update이자 write skew이다.
하지만 다른 예시로, 정원이 1명인 자리에 두 개의 트랜잭션이 역시 번갈아 operation을 실행한다면 두 write가 모두 반영되면서 제약 사항을 위배하게 되고, 이는 write skew이다.
즉, write skew가 lost update의 상위이자 lost update를 write skew가 포함한다.
- [DB] CTE, view, 임시 테이블의 차이?
: 셋 모두 데이터베이스에서 데이터의 재사용 혹은 간소화를 위해 쓰인다.
CTE는 with 절을 이용해 선언하며, 쿼리가 끝나면 사라진다. (가상 테이블은 생성, 삭제)
view는 CREATE VIEW를 이용해 선언하며, 결과가 아닌 쿼리 자체를 저장한다.
임시 테이블은 CREATE TEMPORARY TABLE을 이용해 선언하며, 세션 종료 시 사라진다.
(세션이란 현재 client가 접속한 것을 의미)
이때 view는 단순 SELECT 문만 지원한다는 점에서 stored function과 차이가 있음.