← 질문 목록
#399깊이 0
외래키 제약은 데이터 쓰기 성능에 어떤 부담을 주는가?
데이터베이스
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
쓰기가 일어날 때마다 참조 테이블의 데이터를 검사하고 잠금을 걸기 때문이다.
- 1. 클라이언트에서 자식 테이블로: 데이터 쓰기 요청
- 2. 자식 테이블에서 부모 테이블로: PK 존재 확인 및 공유락 획득
- 3. 부모 테이블에서 자식 테이블로: 존재 확인 응답
- 4. 자식 테이블에서 DB 저장소로: 자식 데이터 저장
부모 테이블의 행이 존재하는지 확인하는 조회가 매번 발생한다. 이 과정에서 부모 행에 공유락이 걸린다.
동시에 여러 트랜잭션이 자식 행을 추가하면 잠금 병목이 커진다. 부모 행을 수정할 때도 자식 테이블을 매번 검사한다.
대량 데이터를 넣을 때 인덱스 탐색과 잠금 대기 비용이 커진다. 무결성을 DB가 보장하는 대신 쓰기 처리량을 잃는다.