테이블은 칼럼(열)과 로우(행)으로 구성되어 있다 -> 추상적인 개념.
파일로 가게되면 행이 레코드가 된다.
레코드는 여러개의 필드로 구성되어 있는데,
열이 레코드에서는 필드가 된다.
# 파일 구성 방법
테이블은 레코드들의 집합
- 힙 파일 구조 : 공간이 있으면 배정
- 순차파일 구조 : 주어진 키 (검색키)값에 따라 연속적인 순서로 배정
검색하는것은 조건이 적용되는 것. 이때, 조건값이 검색키.
정렬은 검색/시행착오 과정을 줄여줌
- 해싱파일 구조 : 속성들을 해시함수에 적용하고 파일 내 위치를 정함. 시행착오 x
ex 레코드 구성) "홍길동" | 컴공 | 2019 | 3.8 일 때,
예시의 레코드를 찾으려면 해시함수H("홍길동") 한다.
H("홍길동")=57일때, 파일 내 57번째에는 홍길동의 레코드가 있다.
# 순차파일 구조
* 순차파일 구조은 대략적인 위치만을 가지고 찾아가서 시행착오가 존재하지만,
해싱파일 구조는 있으면 위치를 반환하기에 시행착오가 없다. *
- 검색키 -> 특정 속성'들' (속성들을 조합할 수 있기에 속성) (반드시 주키다 슈퍼키일 필요는 없음)
속성 = 열 => field(필드)
(속성과 열은 추상적)
레코드들이 포인트로 다음 레코드를 지목하면서 순서를 가진다.
# 순차파일 삽입
- 빈공간에 삽입
- 빈공간이 없다면 포인터로 연결된 사이에 낄 수 없으므로, 새로운 공간을 만들 후 삽입.
- Overflow 블록에 배정 -> 물리적 순차성을 위한 재구성 (Key Rebuilding) -> 비용 발생하지만, 성능좋아짐
# 다중테이블 클러스터링 파일 구조
- 하나의 블록에 2개 이상 테이블의 레코드를 저장하기
- natural join으로 두개 이상 테이블의 레코드를 저장하면 탐색 효율이 좋아진다.
Data dictionary, System Catalog
# 데이터베이스 버퍼
- 목적 ) 디스크와 주기억장치 사이의 블록 전송 수 최소화하기!
- 최소화 방법) 주기억 장치에 많은 블록 유지 (접근회수 줄이기위해)
- 주기억장치에 블록 저장하기 위한 공간은 버퍼 (Buffer)
# 버퍼 관리자 (Buffer Manager)
- 디스크로부터 블록 가져오려고 할때, 버퍼 관리자 호출
(1) read 하는 경우
(2)-1 write 하는 경우
(2)-2 DB Buffer 꽉 찼을 경우
디스크에서 M.M으로 넘어올 때 DB Buffer가 꽉 찼을 경우, 원래 있던 자리를 꿰찬다. 이때 어떤 자리를 정할지 전략을 짜야한다. -> (3) 버퍼교체전략
(3) 버퍼 교체 전략 (Replacement strategy)
- LRU 제일 적게 사용된 자리에 대체.
이 때, 붙박이 블록 (pinned block)은 제외.
- 블록 강제 출력
- MRU : 가장 최근에 사용된 자리에 대체
** OS에서는 블록단위로만 데이터를 처리한다.
row단위로 교체전략을 정교하게 설정해야한다. **
'전공 과목 이수2👨💻 > 데이터베이스관리' 카테고리의 다른 글
Transaction 트랜잭션 (0) | 2021.12.06 |
---|---|
인덱스 정리 (0) | 2021.11.05 |
인덱스 (0) | 2021.10.13 |
파일 구조 (0) | 2021.10.04 |
RAID (0) | 2021.10.04 |
저장장치 (0) | 2021.09.15 |