출제기준 단원 「데이터 지역화(locality)」의 공개 문제 3개를 묻는 꼴별로 나누면 이렇습니다.
묻는 꼴
문제 수
무엇을 묻나
로킹 기법
1
로킹 단위와 기법 설명의 옳고 그름
회복 기법
1
로그를 활용하는 회복 방식 고르기
물리적 설계의 범위
1
물리적 설계 설명에서 거리가 먼 것
뜻
메모리 접근 패턴에는 공간적 국소성과 시간적 국소성이 있다. 공간적 국소성(Spatial Locality)은 인접한 메모리 주소가 자주 접근되는 현상이다. 시간적 국소성은 같은 주소가 반복 접근되는 현상이며, 셀(Counting)이나 집계(Totaling)에 쓰이는 변수가 여기에 해당한다. 셀과 집계 변수는 공간 구역성의 예가 아니므로 '공간 구역성에 해당하지 않는 것'을 고르는 문제의 정답이 된다.
데이터베이스 객체도 구분한다. 인덱스는 사용자가 수동으로 생성·수정할 수 있는 객체이므로 자동으로 생성된다는 설명은 틀리다. 물리적 설계는 저장 구조와 접근 경로의 최적화에 중점을 두며, 트랜잭션 인터페이스 설계는 논리적 설계의 영역이다.
병행제어 기법에는 로킹, 타임스탬프, 다중버전 등이 있다. 시분할은 CPU 할당 기법이므로 병행제어 기법이 아니다. 로킹 단위가 작아지면 동시에 접근할 수 있는 범위가 넓어져 병행성(공유도)은 높아지지만, 관리 대상이 늘어나 오버헤드도 증가한다. 반대로 로킹 단위가 크면 한 번에 잠그는 범위가 넓어져 병행성(동시 처리 능력)이 떨어진다.
회복도 함께 본다. 데이터베이스 로그를 필요로 하는 회복 기법은 즉각 갱신 기법으로, 트랜잭션 수행 중 변경 사항을 로그에 기록해 장애가 나면 복구한다. 트랜잭션을 수행하다 장애로 손상된 데이터베이스를 손상 이전의 정상 상태로 복구시키는 작업은 리커버리(Recovery)다. 장애 가운데 트랜잭션 장애는 논리적 오류라 저장 매체 손상이 없어, 복구 과정에서 데이터 무결성을 훼손할 위험이 가장 적다.
예제
선지 판단은 셀·집계 변수를 공간 구역성이 아니라 시간적 국소성으로 돌리는지, 인덱스를 사용자가 수동으로 만들고 고치는 객체로 보는지, 로킹 단위가 작을수록 병행성은 높고 오버헤드는 늘어난다고 읽는지, 병행제어 기법에서 시분할을 빼는지, 로그를 쓰는 회복 기법을 즉각 갱신 기법으로 고르는지, 손상된 데이터베이스를 이전 정상 상태로 되돌리는 작업을 리커버리로 짝지었는지, 물리적 설계의 초점을 저장 구조·접근 경로 최적화로 보는지에서 갈린다.
대표 기출 3문항
병행제어의 로킹(Locking) 단위에 대한 설명으로 옳지 않은 것은?
데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있다.
로킹 단위가 작아지면 로킹 오버헤드가 감소한다.
로킹 단위가 작아지면 데이터베이스 공유도가 증가한다.
한꺼번에 로킹 할 수 있는 객체의 크기를 로킹 단위라고 한다.
정답과 해설 보기
정답 ② · 데이터베이스 병행제어 기법인 로킹의 단위와 그에 따른 특성을 묻는 문제이다. 로킹 단위는 한 번에 잠글 수 있는 객체의 크기를 의미하며, 데이터베이스, 파일, 레코드, 필드 등이 모두 단위가 될 수 있다.
로킹 단위가 작아지면 동시성(공유도)은 증가하지만, 관리 대상이 늘어나 오버헤드는 증가한다.
데이터베이스 로그(log)를 필요로 하는 회복 기법은?
즉각 갱신 기법
대수적 코딩 방법
타임 스탬프 기법
폴딩 기법
정답과 해설 보기
정답 ① · 데이터베이스 회복 기법 중 트랜잭션 수행 과정의 변경 내용을 로그 파일에 기록해야 하는 기법을 묻고 있다. 즉각 갱신(Immediate Update) 기법은 트랜잭션이 연산을 수행하는 도중에 변경 내용을 실제 데이터베이스에 즉시 반영하는 방식이다.
즉각 갱신 기법은 트랜잭션 중 변경 사항을 로그에 기록하여 장애 시 복구하는 방식이다.
로킹(Locking) 기법에 대한 설명으로 틀린 것은?
로킹의 대상이 되는 객체의 크기를 로킹 단위라고 한다.
로킹 단위가 작아지면 병행성 수준이 낮아진다.
데이터베이스도 로킹 단위가 될 수 있다.
로킹 단위가 커지면 로크 수가 작아 로킹 오버헤드가 감소한다.
정답과 해설 보기
정답 ② · 로킹 기법에 대한 설명 중 틀린 것을 찾는 문제이다. 로킹 단위가 작아지면 잠금이 세분화되어 여러 트랜잭션이 동시에 접근할 수 있는 범위가 넓어지므로 병행성 수준은 높아지는데, 2번은 이를 낮아진다고 서술하여 틀렸다.
로킹 단위가 작아지면 동시 접근 가능한 범위가 넓어져 병행성(concurrency) 수준은 높아진다.