본문 바로가기
DB 인사이드 | PostgreSQL HOT - 1. Page와 관리 시작하며PostgreSQL HOT Series에서는 HOT(Heap Only Tuple) Update의 동작과정을 이해하며, 궁극적으로 성능 최적화 및 모니터링 방안을 확립하기 위한 내용을 다룰 예정입니다.이를 위해, 우선 본 문서에서는 다음과 같은 Page 및 관련 개념들에 대한 설명을 진행하겠습니다. 해당 개념들은 모두 유기적으로 연결되어 있으며, Series 전반에 걸쳐 자주 언급되므로 정확한 이해를 필요로 합니다. Page LayoutHOTSingle-page VacuumingFillfactor 1. Page Layout📢 페이지란 디스크 상의 표현으로 블록이라 부르며 0부터 순차적으로 번호가 지정되는데 이 번호를 블록 번호라고 합니다.PostgreSQL의 모든 테이블과 인덱스는 고정 크기(일반.. 2023. 2. 22.
DB 인사이드 | PostgreSQL Vacuum - Monitoring : XMIN’s Horizon Vacuum Series를 통한 Vacuum 동작원리에 이어 이번에는 Monitoring 시 주의해야 할 사항에 대해 이야기해 보도록 하겠습니다.PostgreSQL에 익숙하지 않은 사용자의 경우 Vacuum의 중요성만 인지할 뿐, 단순히 Autovacuum을 Enable 시키거나 Job(Cron)을 통한 Manual Vacuum을 수행하는 것으로 필요한 처방을 다 했다고 생각하곤 합니다.하지만, MVCC 모델에서 파생된 복잡/다양한 메커니즘은 비단 [Auto]vacuum Operation뿐만 아니라 일반적인 Database 운영 과정까지 지대한 영향을 끼칩니다. 본 문서에서는 그중 idle in transaction상태의 Session이 Vacuum Operation과 맞물렸을 때 발생하는 상황에 대해 .. 2023. 1. 19.
DB 인사이드 | PostgreSQL Setup - Migration & Upgrade 성능 및 주의사항 ※ 목차 ※ 업그레이드 주의사항         Role & Tablespace         Extension 업그레이드 성능         Backup 성능         Restore 성능         pg_upgrade 성능         필요 Disk 여유공간         정리 Data 검증         Object 개수 확인         Procedure 개수 확인         Trigger 개수 확인         Sequence Last Value 확인  PostgreSQL의 신규 기능들을 사용하기 위해서, 혹은 EOL 등의 이유로 PostgreSQL Major 업그레이드를 고려할 수 있습니다. PostgreSQL Major 업그레이드하는 방법은 여러 가지가 존재하며 어떠한 업그레이.. 2022. 11. 23.
DB 인사이드 | PostgreSQL Setup - Major Upgrade ※ 목차 ※ Major Upgrade Test Data Major Upgrade Using pg_dumpall Major Upgrade Using pg_dump Major Upgrade Using pg_upgrade Major Upgrade Using pg_upgrade Link Option Major Upgrade Using pg_upgradecluster(Only Debian계열)  PostgreSQL의 신규 기능들을 사용하기 위해서, 혹은 EOL 등의 이유로 PostgreSQL 업그레이드를 고려할 수 있습니다. Major버전 업그레이드의 경우 시스템 테이블과 Data 파일의 내부 아키텍처의 변화에 따라 버전 간의 호환성이 유지되지 않기 때문에 pg_dump, pg_restore, pg_upgrade.. 2022. 9. 28.
DB 인사이드 | PostgreSQL Setup - Minor Upgrade ※ 목차 ※ Upgrade PostgreSQL Minor Version on Linux Upgrade PostgreSQL Minor Version on Windows Upgrade PostgreSQL Minor Version on Linux목차PostgreSQL의 Minor버전 릴리즈는 Major버전의 아키텍처를 변경(변형) 하지 않는 선에서 자주 발생하는 버그, 보안 및 데이터 손상 문제에 대해서만 수정된 내용을 제공합니다. Major버전 내부 아키텍처 변경이 없기 때문에 Minor버전 간의 호환성을 유지할 수 있습니다.Linux에서 Minor Version Upgrade는 세가지 방법이 존재합니다.첫 번째로, yum, apt를 통한 Minor Upgrade가 있습니다. 인터넷이 연결되어 있고, Pos.. 2022. 9. 28.
DB 인사이드 | PostgreSQL Setup - Installation 본 문서에서는 Linux와 Windows에서 PostgreSQL 여러 설치 방법에 대해 설명하도록 하겠습니다.※ 목차 ※ Install Overview Install PostgreSQL on Linux (CentOS - yum) Install PostgreSQL on Linux (CentOS - rpm) Install PostgreSQL on Linux (Ubuntu - apt) Install PostgreSQL on Linux (Ubuntu - dpkg) Install PostgreSQL on Linux (Source File) Install PostgreSQL on Windows (설치관리자) Install PostgreSQL on Windows (Binary File) 부록 1. 외부 접속을 위한 .. 2022. 8. 25.
DB 인사이드 | PostgreSQL Setup - Version & Utility ※ 목차 ※ PostgreSQL 버전 정책         1. PostgreSQL 릴리즈 정책         2. PostgreSQL 릴리즈 현황         3. PostgreSQL 버전 표기 PostgreSQL 업그레이드         1. PostgreSQL Minor 업그레이드         2. PostgreSQL Major 업그레이드 PostgreSQL 응용프로그램         1. pg_dump         2. pg_dumpall         3. pg_restore         4. pg_upgrade         5. initdb         6. pg_upgradecluster         7. pg_dropcluster         8. pg_lsclusters   .. 2022. 8. 25.
DB 인사이드 | MySQL Architecture - 8. InnoDB : 동작 원리 앞서 MySQL의 InnoDB Architecture와 그 구성 요소들에 대해 알아보았습니다.본 문서에서는 해당 내용을 바탕으로 MySQL의 Connection 생성 및 사용자 요청 처리, 주요 Thread의 동작 방식에 대한 내용을 InnoDB 스토리지 엔진 사용을 토대로 설명하도록 하겠습니다. Connection 생성 과정MySQL의 Connection 생성 및 동작방식은 InnoDB 외 다른 스토리지 엔진에서도 모두 동일합니다.MySQL Server는 하나의 OS 프로세스로 실행되며, 내부적으로 여러 개의 Thread가 동시에 작업을 수행합니다. 이때, MySQL은 자체 Thread 구현 방식을 가지고 있지 않으므로 OS의 Thread 관리 방식에 의존하여 동작합니다.MySQL의 Connection.. 2022. 7. 27.
DB 인사이드 | MySQL Architecture - 7. InnoDB : On-Disk Structure 본 문서에서는 MySQL에 주요 스토리지 엔진인 InnoDB의 On-Disk Structure에 대해 알아보도록 하겠습니다. InnoDB의 디스크 구조 관련 항목은 아래와 같으며, InnoDB는 모든 Data를 디스크 상의 Tablespace라는 논리적인 공간에 저장합니다.TablespaceTableIndexDoublewrite BufferRedo LogUndo Log TablespaceTablespace는 Data를 저장하는 데 사용되는 가장 큰 논리적 단위이며, 내부적으로 Segment → Extent → Page → Row의 형태로 구성됩니다.MySQL의 Tablespace는 저장하는 데이터의 종류와 방식에 따라 5가지로 분류가 가능한데, 각각의 Tablespace에 대해 알아보도록 하겠습니다. T.. 2022. 7. 27.