본문 바로가기

Database/Postgresql

Postgresql 내부 살펴보기

내 DB는 어떻게 저장되는가?

 

Mysql등을 쓰면서도 한번도 생각 안해본 주제이다. 

어떻게 동작하는지 알면  최적화도 쉽게 할거라는 생각에서 이걸 공부하게 되었다.

 

먼저 포스트그레스가 설치된 폴더에서, data폴더에 base라는 폴더가 또 있다.

거기 들어가보면 왠 숫자들이 있고, 이것의 정체는 다음과 같다

우리가 만들었던 폴더들이 아래에 보인다. 

templete폴더는 어... 일종의 복사본 같은건데 이건 나중에 또 설명할 기회가 있으니 우선 패스.

그럼 내가 만들었던 instagram_clone폴더에 가면 8kb 단위의 수많은 파일들이 있다.

이게 바로 우리가 저장한 데이터 들인데... heap 파일이라고 부른다.

파일을 뜯어보면 users 테이블의 정보나 hashtag id, primary key, 그리고 24724번을 보면

뭔가 서로 테이블끼리 연결한 내용을 담고있는 등의 정보가 보인다.

 

Heap 과 block(page) 그리고 tuple(item)

 

먼저, 자료구조에서 배우는 Heap과 파이썬 등에 있는 튜플이랑은 다르다는 점을 인지하고 들어가자.

 

전체적인 구조는 다음과 같다

 

Heap 파일은 수많은 Block으로 이루어져 있고, 해당 블록은 8kb로 이루어져 있다.

(물론 여러 내용을 담은 블록들은 24kb짜리도 있고 한데, 우선은 기본 8kb로 생각하)

 

해당 블록안에는, header와 tuple이 있는데, tuple 안에 우리가 실제로 입력한 값이 들어간다고 생각하면 되겠다. 또한 header 다음에는 각 tuple에 관한 내용을 가지고 있다.

 

이렇게 간단하게

 

Postgres에서 데이터가 어떻게 저장되는지 알아보았다.

 

이 내용을 바탕으로 인덱싱 등을 향후 진행해보려고 한다.

 

참고

https://seunghyunson.tistory.com/16

'Database > Postgresql' 카테고리의 다른 글

Index가 무엇인가? 그리고 장 단점 정리  (0) 2023.04.29
Instagram DB practice(1)  (0) 2023.04.27