📌 Heap/Heap File
Heap 혹은 Heap File은 테이블 하나의 모든 정보를 저장하는 파일이다.
여러개의 block으로 구성되어 있다.
시스템 내부에 바이너리 파일 형태로 저장되어 있는데, 아래 쿼리문을 실행하면
SHOW data_directory;
데이터가 저장되는 디렉터리 경로를 알 수 있다.
그리고 해당 디렉터리에 들어가 보면, 여러 파일들이 있는데, 그 중 우리가 봐야 할 것은 base 폴더다.
들어가 보면.. 다음 과 같이 이상한 숫자들만 나온다.
또 아래 쿼리를 실행해서 이 숫자들이 뭔지 알아보자
SELECT oid, datname
FROM pg_database;
이 폴더들은 데이터 베이스 별로 나눠둔 것이였다.
그럼 하나를 무작위로 들어가 보자.
😲 헉! 이번에도 이상한 숫자들이 앞을 가로막았다!
이 파일들이 우리가 찾던 🎉Heap File🎉이다!
하나의 파일이 하나의 테이블을 의미한다.
아래의 쿼리로 더 자세히 알아 보자.
SELECT * FROM pg_class;
old는 파일 번호이고, 어떤 테이블인지는 relname을 보면서 알아내면 되겠다!
📌 Block
블럭은 정보를 나눠서 저장하는 단위로, 8kb로 고정되어 있다.
block이 꽉 차든 아니든 무조껀 편의상 8kb로 정한다.
헤더와 아이템 정보(tuple or record 정보)를 저장한다.
내가 DB에 넣었던 데이터는 여기 들어간다고 생각하면 쉽다.
이렇게 만들어진 Block을 header file에 차곡차곡 쌓아서 저장한다.
(그래서 header file중 어떤것은 1개의 block만 있어서 8kb인 것도 있고, 어떤 것은 여러개의 block을 저장해서 크기가 큰 것도 있다)
📌 Tuple
하나의 Record, 하나의 Row를 의미한다.
단순히 데이터를 저장하는 단위라고 생각하면 된다.
'프로그래밍 > DB' 카테고리의 다른 글
N+1 쿼리 문제를 이해하고 해결하기 (번역) (비공개) (0) | 2022.11.14 |
---|---|
트랜잭션의 격리 수준 (PostgreSQL) (0) | 2022.10.13 |