본문 바로가기
DB 인사이드 | PostgreSQL Vacuum - 2. Transaction ID 📢 본 문서에서는 MVCC 모델을 통해 소개한 Transaction ID(이하 XID)에 대해 자세히 알아보도록 하겠습니다. 우선 ①XID의 정의와 용도를 확인하고, ②부족한 XID를 극복하기 위해 PostgreSQL이 선택한 방법을 알아보도록 하겠습니다. Transaction ID XID 란? 우리는 미래에 일어날 사건에 대해 알지 못하지만 과거에 일어났던 사건들은 충분히 알 수 있습니다. 현실이 아닌 DBMS에서 일어나는 일련의 사건들을 트랜잭션이라고 부르며, 트랜잭션이 발생한 시점을 식별하기 위한 정보로 XID가 사용됩니다. 즉, XID란 일종의 시간 정보로 이해할 수 있습니다. XID는 트랜잭션이 일어날 때마다 하나씩 증가하며, MVCC모델의 구현 및 읽기 일관성을 위해 사용됩니다. XID 사용용.. 2022. 4. 29.
DB 인사이드 | PostgreSQL Vacuum - 1. MVCC 📢 Vacuum Series의 첫 시작으로, PostgreSQL의 MVCC모델에 대해 알아보도록 하겠습니다. 본 문서에서는 ①MVCC동작 방식 및 예제를 설명한 후 ②해당 모델로 인해 발생 가능한 문제점들을 알아보도록 하겠습니다. MVCC 동작 방식 MVCC 란? MVCC(Multi Version Concurrency Control)란 “다중 버전 동시성 제어”의 줄임 말로, 과거부터 현재까지의 다양한 버전 데이터들에 대한 관리와 제공이 가능한지를 나타내는 DBMS 필수 기능 중 하나입니다. 즉 시시각각 변하고 있는 데이터 중 사용자가 조회를 시작한 시점의 정확한 데이터를 제공받을 수 있는지를 나타내는 것으로, 그 구현 방법은 각각의 DBMS마다 다르지만 목적만은 모두 동일하다고 할 수 있습니다. Pos.. 2022. 4. 29.
DB 인사이드 | PostgreSQL Architecture - 4. 동작 원리 본 문서에서는 PostgreSQL Architecture 전반에서 다룬 내용을 바탕으로 커넥션 생성 및 사용자요청처리, 백그라운드 Process의 동작 방식 등에 대한 내용을 다루겠습니다. 커넥션 생성 과정 우선 사용자가 PostgreSQL과 커넥션을 맺고 요청을 처리/회신하는 과정을 확인해보겠습니다. 1. postmaster 프로세스는 Listener 역할을 하며 Client로부터 새로운 연결 요청을 기다립니다. 2. postmaster 프로세스는 새로운 Client 연결 요청에 대한 인증을 하고 postgres 프로세스를 생성합니다. 이때 각각의 프로세스에는 work_mem 같은 Local Memory가 개별 할당됩니다. 3. postgres 프로세스가 Client와 연결되면 postmaster 프로.. 2022. 4. 27.
DB 인사이드 | PostgreSQL Architecture - 5. SQL 처리 과정 PostgreSQL SQL 처리과정 본 문서에서는 PostgreSQL의 SQL처리과정에 대해 알아보도록 하겠습니다. postgres 프로세스는 Client로부터 SQL(Query string)을 전달받으면 아래와 같은 5개의 과정을 거쳐 SQL을 처리하며 그 결과를 Client로 반환합니다. 각 과정에서는 문법체크 및 의미분석, 최적화 작업 등을 수행하며, 세부적인 내용을 각각 확인해 보도록 하겠습니다. Parser Parsing 단계는 SQL 처리과정의 첫번째 단계로 Query 구문을 분석하여 Syntax Error를 체크하고 Parse Tree를 생성합니다. 해당 단계에서는 System Catalog를 참조하지 않기 때문에 개별 요소들에 대한 의미분석(Semantic)이 불가하며 단순한 문법체크(Sy.. 2022. 4. 27.
DB 인사이드 | PostgreSQL 참고자료 - Configuration File : pg_hba.conf PostgreSQL Authentication PostgreSQL에 접속하기 위한 Client는 인증을 획득해야하며, 인증은 $PGDATA/pg_hba.conf 파일을 통해서 이뤄집니다. 해당 파일에서 한개의 레코드는 5개의 필드값(Type, Database, User, Address, Method)으로 작성이 되며 특정 사용자에 대한 인증 혹은 특정 IP 대역의 접속 제한을 수행합니다. 해당 파일 작성시 다음과 같은 규칙을 따릅니다. #(주석)문자 뒤의 내용은 무시 빈줄 무시 백슬래시(\)로 줄을 끝내면 레코드 다음줄로 계속 작성 가능 공백 및 탭으로 필드 구분 📌 HBA란 Host-Base Authentication 의 줄임말로 호스트 기반 인증을 나타냅니다. pg_hba.conf Sample # U.. 2022. 3. 30.
DB 인사이드 | PostgreSQL 참고자료 - Configuration File : postgresql.conf 📌 Ubuntu에서 apt-get(Advanced Packaging Tool)을 사용하여 설치한 PostgreSQL 14 버전 기준으로 정리 파라미터 명에 노란색 음영처리는 변경 시 재기동필요 FILE LOCATIONS Parameter Default Value Description data_directory /var/lib/postgresql/14/main Data Directory 경로 external_pid_file /var/run/postgresql/14-main.pid postmaster PID 저장 파일 hba_file /etc/postgresql/14/main/pg_hba.conf hba 설정파일 경로 ident_file /etc/postgresql/14/main/pg_ident.conf i.. 2022. 3. 30.
DB 인사이드 | PostgreSQL Architecture - 1. Process, Memory 엑셈은 창사 이래 꾸준히 축적해온 IT 시스템 성능 관리 경험과 연구 역량을 토대로 전문적이고 차별화된 컨설팅 서비스를 제공하고 있습니다. DBMS 전문가 엑셈에서 새롭게 선보이는 ‘DB인사이드’는 다양한 DBMS와 기술에 대해 소상히 알려드릴 예정입니다. 많은 관심과 응원 부탁드립니다. ‘DB인사이드’의 첫 시작은 PostgreSQL로 열어볼까 합니다. PostgreSQL은 오픈소스로, 객체 관계형 DBMS입니다. RDB와 NoSQL을 모두 지원하며, 최근 클라우드 환경에서 주목받고 있는 DB 중 하나입니다. 주요 Process PostgreSQL은 postmaster와 postgres라고하는 Server 프로세스를 통해 커넥션을 생성하여 사용자 요청을 받으며, 이러한 요청은 다양한 백그라운드 프로세스.. 2022. 3. 30.