본문 바로가기
DB 인사이드 | PWI - Shared Buffer > Wait Event Shared Buffer의 동작 원리에 이어서, Shared Buffer 내 동작 과정에서 발생할 수 있는 대표적인 Wait Event인 LWLock:BufferMapping과 LWLock:BufferContent에 대해서 알아보겠습니다. 📢 LWLock:BufferMapping, LWLock:BufferContent에서 LWLock은 Wait Event Type을 나타내며 BufferMapping과 BufferContent는 Wait Event Name을 가리킵니다.  LWLock:BufferMapping프로세스가 Hash Table에 대한 BufferMapping Lock 획득을 대기할 때 LWLock:BufferMapping이라는 Wait Event가 발생됩니다.동일한 Hash Table 영역에 .. 2024. 11. 27.
DB 인사이드 | PWI - Shared Buffer > 동작원리 지금까지 PostgreSQL의 Lock에 대해서 알아보았습니다.이어서 PostgreSQL을 구성하는 각각의 내부 아키텍처와 주요 메커니즘을 우선 이해하고, 그 과정에서 나타나는 Wait Event의 발생 원인과 해결 방안에 대해 살펴보겠습니다. 첫 번째 주제로 PostgreSQL의 Shared Buffer에 대해서 알아보고 그와 관련된 Wait Event는 어떤 것이 있는지 알아보겠습니다. Shared BufferShared Buffer는 모든 프로세스가 공유해서 사용하는 Shared Memory 내부에 위치하고 있으며, 데이터를 페이지 단위로 캐싱하여 I/O를 빠르게 처리하기 위한 목적으로 사용됩니다. 또한 Oracle의 Buffer Cache와 매우 유사하며 shared_buffers 파라미터를 통해.. 2024. 10. 25.
DB 인사이드 | PWI - LOCK > Other Locks 📢 PWI(PostgreSQL Wait Interface) - LOCKPostgreSQL의 Wait Event에 대하여 다루기 전에, 먼저 PostgreSQL에서 사용하는 Lock에 대한 전반적인 내용을 다룰 예정입니다.PostgreSQL은 Relation과 같은 Object를 보호하는 Heavyweight Lock(HWLock), Relation의 구성 요소의 하나인 Row를 다루는 Row-level Lock, 그리고 일반적으로 공유 메모리의 데이터 구조에 접근할 때 사용하는 Lightweight Lock(LWLock) 등 다양한 유형의 Lock을 제공합니다.앞으로 PWI - Locks에서는 PostgreSQL에서 사용하는 Lock의 종류와 특징, 동작 방식 등을 알아보고, 사용 예시를 통하여 Loc.. 2024. 9. 25.
DB 인사이드 | PWI - LOCK > Row-level Lock(2) 📢 PWI(PostgreSQL Wait Interface) - LOCKPostgreSQL의 Wait Event에 대하여 다루기 전에, 먼저 PostgreSQL에서 사용하는 Lock에 대한 전반적인 내용을 다룰 예정입니다.PostgreSQL은 Relation과 같은 Object를 보호하는 Heavyweight Lock(HWLock), Relation의 구성 요소의 하나인 Row를 다루는 Row-level Lock, 그리고 일반적으로 공유 메모리의 데이터 구조에 접근할 때 사용하는 Lightweight Lock(LWLock) 등 다양한 유형의 Lock을 제공합니다.앞으로 PWI - Locks에서는 PostgreSQL에서 사용하는 Lock의 종류와 특징, 동작 방식 등을 알아보고, 사용 예시를 통하여 Loc.. 2024. 8. 5.
DB 인사이드 | PWI - LOCK > Row-level Lock(1) 📢 PWI(PostgreSQL Wait Interface) - LOCKPostgreSQL의 Wait Event에 대하여 다루기 전에, 먼저 PostgreSQL에서 사용하는 Lock에 대한 전반적인 내용을 다룰 예정입니다.PostgreSQL은 Relation과 같은 Object를 보호하는 Heavyweight Lock(HWLock), Relation의 구성 요소의 하나인 Row를 다루는 Row-level Lock, 그리고 일반적으로 공유 메모리의 데이터 구조에 접근할 때 사용하는 Lightweight Lock(LWLock) 등 다양한 유형의 Lock을 제공합니다.앞으로 PWI - Locks에서는 PostgreSQL에서 사용하는 Lock의 종류와 특징, 동작 방식 등을 알아보고, 사용 예시를 통하여 Loc.. 2024. 8. 5.
DB 인사이드 | PWI - LOCK > Relation-level Lock 📢 PWI(PostgreSQL Wait Interface) - LOCKPostgreSQL의 Wait Event에 대하여 다루기 전에, 먼저 PostgreSQL에서 사용하는 Lock에 대한 전반적인 내용을 다룰 예정입니다.PostgreSQL은 Relation과 같은 Object를 보호하는 Heavyweight Lock(HWLock), Relation의 구성 요소의 하나인 Row를 다루는 Row-level Lock, 그리고 일반적으로 공유 메모리의 데이터 구조에 접근할 때 사용하는 Lightweight Lock(LWLock) 등 다양한 유형의 Lock을 제공합니다.앞으로 PWI - LOCKS에서는 PostgreSQL에서 사용하는 Lock의 종류와 특징, 동작 방식 등을 알아보고, 사용 예시를 통하여 Loc.. 2024. 6. 11.
DB 인사이드 | PWI - PostgreSQL Wait Interface Elapsed Time = CPU Time + Wait Time + ... Database의 성능을 평가하는 중요한 지표 중 하나인, Elapsed Time은 사용자가 쿼리를 요청하여 결과를 받기까지 소요되는 총시간입니다. CPU Time은 쿼리를 처리하는 데 걸린 실제 시간, Wait Time은 요청된 작업이 비활성 상태로 대기열에서 처리되기를 기다리는 시간을 의미합니다.이 중, Wait Time은 다양한 원인으로 발생하는 Wait Event(대기 현상)로 인해 길어지며, 프로세스가 원하는 작업을 처리하는데 걸리는 시간을 길어지게 합니다. 이러한 Wait Time을 해결하기 위하여 다양한 DBMS에서는 여러 가지 Wait Event를 그들만의 방식으로 카테고리화하여 관리하고 있습니다.우리는 Wait E.. 2024. 5. 27.
DB 인사이드 | PostgreSQL Extension - PG_HINT_PLAN PostgreSQL은 Oracle과는 달리 SQL Hint 기능이 기본으로 제공되지 않기 때문에, 별도의 pg_hint_plan Extension을 설치하여 사용할 수 있습니다. SQL Hint 기능은 SQL문을 실행할 때, Optimizer가 생성한 SQL Plan을 사용자가 원하는 방식으로 변경할 수 있도록 Optimizer에게 알려주는 역할이 됩니다. pg_hint_plan Extension이 설치되어 있지 않으면 SQL문에 Hint를 사용하여도 Hint가 적용되지 않으므로 SQL문장에 Hint를 사용하기 위해서는 반드시 설치되어야 합니다.📢 본 문서에서는 pg_hint_plan Extension 설치 방법과 Hint 사용 방법에 대해 기술합니다.  pg_hint_plan Extension 설치 .. 2024. 4. 18.
DB 인사이드 | PostgreSQL Extension - Introduction 시작하며PostgreSQL은 Oracle, MySQL과 같은 다른 DBMS에 비해 기본적으로 제공하는 내장 함수나 부가적인 기능들이 부족한 편입니다. 이를 보완하기 위해 PostgreSQL에서는 Extension 기능을 제공하고 있습니다. PostgreSQL Extension은 PostgreSQL의 기능을 확장해 주는 역할을 하며 이를 통하여 PostgreSQL Database에서 제공하지 않는 기능을 Plug-in 형태로 연결하여 손쉽게 사용할 수 있습니다.  Extension 구성 요소Extension을 사용하기 위해서는 {PostgreSQL 엔진 경로}/share/extension 디렉토리에 다음과 같이 컨트롤 파일(.control)과 하나 이상의 SQL 스크립트 파일(.sql)이 있어야 합니다.[.. 2024. 4. 18.