[데이터베이스] #15. 연습문제 풀이2

bien·2023년 5월 29일
0

데이터베이스

목록 보기
13/17

9강

Q1. 다음중 물리적 저장장치를 데이터 접근 속도가 빠른 것에서 느린 것 순서로 나열된것은?
A1. 레지스터 - 캐시 - 메인메모리 - 자기디스크

물리적 저장장치의 구성

Q2. 다음과 같은 테이블의 스키마에 대해 각 고정길이 레코드에 할당되는 바이트수는? (단, INT는 4바이트 길이를 갖는다)

A2.72

고정길이 레코드: 고정적인 바이트수를 갖는 레코드를 저장하는 기법

Q3. 다음은 어느 파일구조에 대한 설명인가?
모든 레코드를 파일 내 임의의 위치에 저장하며, 저장하는 순서를 고려하지 않는 파일 구조
A3. 힙 파일구조

파일구조화 방법의 종류

  • 힙 파일구조: 저장순서 고려 없이 파일 내 임의의 위치에 배치
  • 순차 파일구조: 레코드들이 탐색키 기준으로 정렬되어 저장
  • 해시 파일구조: 해시 함수를 사용하여 블럭 주소를 계산

Q4. 다음 중 가변 길이 레코드 방식이 필요한 이유가 아닌것은?

A4. 레코드의 수정이 매우 자주 발생할 때

  1. 가변길이 레코드 : 블럭에 저장되는 레코드의 길이가 서로 다른(가변적) 레코드를 할당하는 방법
  2. 가변길이 레코드가 사용되는 상황
    • 한 블럭 내에 저장되는 레코드 유형이 둘 이상
    • 길이가 고정되지 않은 컬럼의 개수가 하나 이상
    • 레코드가 멀티셋을 허용한 컬럼을 가질 때
      멀티셋(multiset):레코드의 컬럼값이 여러 개인 컬럼

Q5. 가변길이 레코드를 저장하기 위해 파일 또는 블록의 헤더에 유지하는 다음과 같은 형식의 구조를 무엇이라고 하는가?

A5. 슬롯 페이지 구조


10강

Q6. 다음 중 요청된 레코드에 빠르게 접근할 수 있도록 하는 구조인 인덱스의 효율성에 대한 평가기준이 아닌 것은?
A6. 사용자의 인덱스를 사용하는 질의 요청 빈도

인덱스의 평가기준
1. 접근 시간: 데이터를 찾는데 걸리는 시간
2. 유지 비용: 새로운 데이터 삽입 및 기존 데이터 삭제 연산으로 인한 인덱스 구조 갱신 비용
3. 공간 비용: 인덱스 구조에 의해 사용되는 부가적인 공간 비용.

Q7. 다음의 설명은 어떤 인덱스에 대한 설명인가?
모든 탐색키 값에 대해 탐색키 <값, 포인터> 쌍으로 구성된 인덱스 엔트리를 갖는 인덱스로 인덱스 파일의 크기가 커서 I/O 비용이 증가하여 탐색 시간이 오래 걸릴 수 있는 단점을 지님
A7. 밀집 인덱스

  • 밀집 인덱스: 모든 레코드에 대해 인덱스 엔트리({탐색키값|포인터}) 쌍을 유지.
  • 희소 인덱스: 인덱스의 엔트리가 일부의 탐색키 값만을 유지
  • 다단계 인덱스: 내부인덱스(=밀집) + 외부인덱스(희소)(범위지시용)

Q8. 다음은 B+ 트리의 예시이다. 이순신을 탐색하는 과정에서 거치는 포인터를 올바른 순서로 나열한 것은?

A8. 1-5-8

상용 DBMS에서 사용하는 인덱스가 주로 B+ 트리로 만들어짐. 잘 알아두는 편이 좋다!


11강

Q9. 위 그림에서 검색키를 버킷 주소에 대응시키는 h를 무엇이라고 하는가?

A9. 해시 함수

Q10. 서로 다른 두 레코드 R1과 R2의 탐색키가 h에 의해 동일한 버킷으로 대응되었을 때, R1과 R2를 무엇이라고 하는가?
A10. 동거자

  • 충돌: 서로 다른 두 레코드(탐색키가 다른)가 동일한 버킷에 대응
  • 해싱: 탐색키에 산술적인 연산을 통해 버킷 주소를 계산하는 해시 함수를 사용하여 데이터 배분 및 접근하는 방법.
  • 오버플로: 버킷에 레코드를 저장할 수 있는 여유공간이 없는 상황에 발생(버킷이 가득차서 넘친 상황)
  • 동거자: 충돌에 의해 같은 버킷 주소를 갖는 레코드

Q11. 데이터베이스의 크기에 따라 버킷의 개수 즉, B1, B2, ..., Bn이 조절되는 형태의 해싱을 무엇이라고 하는가?
A11. 동적 해싱

정적해싱: 버킷의 개수가 고정된 해싱기법
동적해싱: 버킷의 개수를 가변적으로 조절할 수 있는 해싱기법(Ex. 확장성 해싱-디렉토리, 버킷 2단계 구조)

Q12. 다음과 같은 테이블에 대해 성별 컬럼에 비트맵 인덱스를 생성할 때, '남자'에 대한 비트열로 올바른 것은?
A12. 1110100

비트맵 인덱스

  • 탐색키의 중복 비율이 높은 컬럼을 대상으로하는 질의를 효율적으로 처리하기 위해 고안된 특수한 형태의 인덱스
  • i번째 레코드가 컬럼 A에 해당 값을 가지면 비트맵의 i번째 비트를 1로, 그렇지 않으면 0으로 설정.

12강

Q13. 다음 중 트랜잭션의 특징이라고 할 수 없는 것은?
A13. 확장성

트랜잭션

  • 데이터베이스를 조작하기 위한 하나의 논리적 단위를 이루는 일련의 연산의 집합
  • 데이터베이스를 사용하여 처리하는 작업을 하나의 묶음으로 인식하여 묶음 단위로 실행되도록 정의한 개념

트랜잭션의 특징 : ACID 특성

  • 원자성(Atomicity): 하나의 트랜잭션에 포함된 모든 연산은 완전히 수행되거나 전혀 수행되지 않음.
  • 일관성(consistency): 특정 트랜잭션이 수행되기 전과 후에 데이터베이스가 일관된 상태를 유지
  • 고립성(isolation): 특정 트랜잭션이 데이터베이스를 갱신하는 동안 다른 트랜잭션에 의해 방해받지 않음
  • 지속성(durability): 완료된 트랜잭션의 결과는 어떠한 시스템의 장애에도 데이터베이스에 반영되어야 함.

Q14. 다음 중 트랜잭션을 동시에 실행시키는 목적에 대한 설명ㅇ으로 옳지 않은 것은?
A14. 데이터베이스의 일관성이 향상된다.

트랜잭션 동시 실행의 이점

  • 트랜잭션 처리율과 자원 이용률을 향상
  • 트랜잭션의 대기 시간을 감소

Q15. 다음 빈 칸에 알맞은 것은?
스케줄에 대한 대기 그래프가 ( )을/를 포함하면, 그 스케줄은 교착상태에 있다는 것을 의미한다.
A15. 사이클

Q16. 다음 중 아래의 스케줄과 충돌 동등한 스케줄이 아닌것인?

A16.

충돌 동등: 특정 스케줄 s에서 충돌이 일어나지 않는 연산의 순서를 바꿔 스케줄 S'으로 변환이 가능한 상태.

  • 같은 데이터의 Read를 순서 바꾸는 것은 문제 없음.
  • 다른 데이터의 Write 순서를 바꾸는 것은 문제없음.
  • 같은 데이터의 Write 순서를 바꾸는건 충돌 일으킴

Q17. 다음은 무엇에 대한 설명인가?
두 트랜잭션 순서쌍 Ti와 Tj에 대해, Ti가 기록한 데이터 항목을 Tj가 읽는다면, Ti의 커밋이 Tj의 커밋보다 먼저 나타나는 스케줄
A17. 회복 가능한 스케줄

회복 가능한 스케줄

  • Ti와 Tj에 대해 Ti가 기록한 데이터를 Tj가 읽을 때, Ti의 커밋이 Tj보다 먼저 나타나는 스케줄
  • 연쇄적 롤백 유발 가능: T7의 롤백으로 인하여 연쇄적으로 다른 트랜잭션도 롤백되는 현상

    이거진짜 너무 헷갈린다

13강

Q18.락 기반 규약을 사용하는 시스템에서 다음의 두 트랜잭션이 병렬적으로 실행될 경우 어떤 스케쥴이 작성될 수 있는가?

A18.교착상태 포함 스케줄
락을 걸고 언락을 제일 뒤에서 하고 있음. 데이터 일관성유지에는 유리한 락킹 규약. 그러나 언락이 너무 늦어지면 서로가 상호 대기하며 사이클을 형성하는 교착상태에 처할 수 있다.

Q19. 교착상태 회복을 위해 교착상태의 트랜잭션 집합이 주어지면 교착상태를 해결하기 위해 롤백시킬 트랜잭션을 결정한다. 이때 롤백 대상 트랜잭션을 무엇이라 하는가?
A19. 희생자.


14강

Q20. Write 연산을 수행할 때 마다 데이터베이스가 변경되기 전에 로그 레코드를 우선 로그에 추가하는 방식을 무엇이라고 하는가?
A20. Write Ahead Log

WAL(Write-Ahead Log) 쓰기에 앞서 로그

  • 트랜잭션은 데이터베이스 수정 전, 로그 레코드를 생성하여 기록

Q21. 다음 중 체크포인트 발생 시 수행되는 작업이라고 할 수 없는 것은?
A21. 다음 체크포인트 발생 주기를 결정한다.

체크포인트 기법
1. 현재 시점에 메인 메모리의 버퍼 블록에 존재하는 모든 로그 레코드를 안정 저장장치로 기록
2. 수정된 모든 버퍼블럭을 디스크에 반영
3. 로그레코드 <checkpoiont ListT>를 안정 저장장치에 기록

Q22. checkpoint 로그 레코드의 ListT의 값으로 올바른 것은?

A22. {T0, T1}

체크포인트 발생시점에 시행되고 있던 모든 트랜잭션을 ListT에 포함시켜 이미 처리된 트랜잭션과 처리 도중인 트랜잭션을 구분한다. 오류 발생 시 회복을 위해 checkpoint에 기록된 진행중이던 트랜잭션만 redo, undo 필요성을 검토하면 된다!

Q23. 위 로그를 통해 Redo를 수행해야하는 트랜잭션은?

A23. {T0, T1}

  • 로그에 < 𝑇𝑖, 𝑐𝑜𝑚𝑚𝑖𝑡 > 또는 < 𝑇𝑖, 𝑎𝑏𝑜𝑟𝑡 >가 없는 𝐿𝑖𝑠𝑡𝑇안의 모든 트랜잭션을 Undo (체크포인트 시점에 실행중이었음을 의미)
  • 로그에 < 𝑇𝑖, 𝑐𝑜𝑚𝑚𝑖𝑡 > 또는 < 𝑇𝑖, 𝑎𝑏𝑜𝑟𝑡 >가 있는 𝐿𝑖𝑠𝑡𝑇안의 모든 트랜잭션을 Redo (체크포인트 시점에 완료되어 기록(commit), 사용자가 인위적으로 트랜잭션 취소(abort)함을 의미)

강의 더해주세요 교수님ㅠㅠ

profile
Good Luck!

0개의 댓글