일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 베스트앨범 파이썬
- 백준 1516 게임 개발
- 가장 긴 바이토닉 부분 수열 파이썬
- 프로그래머스 순위 파이썬
- 프로그래머스 여행경로
- 백준 1238 파티 파이썬
- 가장 긴 팰린드롬 파이썬
- 프로그래머스 등굣길
- 프로그래머스 베스트앨범
- 역사 파이썬
- SWEA
- 백준 2146 다리 만들기
- 다중 컬럼 NOT IN
- 순위 파이썬
- 등굣길 파이썬
- 램프 파이썬
- 프로그래머스 가장 긴 팰린드롬
- SQL SERVER 장비교체
- 게임 개발 파이썬
- 다리 만들기 파이썬
- 백준 1613 역사
- 백준 1034 램프 파이썬
- 반도체 설계 파이썬
- 백준 11054.가장 긴 바이토닉 부분 수열
- 백준 1043 거짓말 파이썬
- 백준 1167 트리의 지름 파이썬
- 백준 2352 반도체 설계 파이썬
- 프로그래머스 순위
- SQL SERVER MIGRATION
- 트리의 지름 파이썬
Archives
- Today
- Total
공부, 기록
[postgreSQL] 인덱스 스캔 방법 본문
해당 글은 postgreSQL 9.6 성능이야기 책을 읽고 이해한 내용을 정리하였습니다.
PostgreSQL의 실행계획 명칭
PostgreSQL은 다음 5가지 스캔 방식을 사용한다.
- Sequential Scan : Sequential Scan은 테이블의 모든 데이터를 하나씩 확인하는 방법
- Index Scan : 인덱스를 탐색하는 방식.
Bulk Read로부터 Buffer를 보호하는 방법
▪ IO 유형을 4가지로 구분하고, 이때 Bulk Read인 경우에는 Ring Buffer를 사용하도록 한다.
▪ Bulk Read는 Shared Buffer의 1/4 보다 큰 테이블에 대한 Seq Scan을 의미한다.
▪ Bulk Read를 위한 Ring Buffer의 크기는 32 블록이다. - Index Only Scan : MySQL의 커버링 인덱스를 사용하는 것과 같은 방식
- Bitmap Scan : Index Scan과 Sequential Scan이 조합된 방식
- Bitmap Index Scan 단계에서 인덱스 자료구조를 스캔하며 조건에 해당하는 인덱스의 데이터를 이용해서 bitmap을 생성한다(조건에 맞으면 1 아니면 0). 이 bitmap에는 인덱스에 해당하는 테이블의 row에 접근할 수 있는 정보가 담겨 있다.
- Bitmap Heap Scan 단계에서는 앞서 생성된 bitmap을 스캔하면서 조건에 맞는 실제 데이터를 가져오게 된다.
- TID Scan : TID는 Tuple Indecator의 줄임말인데 특정 row의 실제 위치를 나타내는 6byte 값으로, 4byte는 페이지 번호, 2byte는 페이지 내의 튜플 인덱스를 나타낸다고 한다 (PostgreSQL 버전의 rowid개념으로 보인다)
쿼리 조건에 ctid가 있는 경우에 사용이되는 특수한 경우.
EXPLAIN 명령어 옵션
- ANALYZE– 이 매개변수는 쿼리를 실행하고 각 단계에 대한 계획, 비용 추정, 실제 전후 런타임, 실제 행 수를 표시합니다. 이 매개변수를 실행하면 테이블의 통계도 업데이트됩니다.
- BUFFERS– 이것은 ANALYZE와 함께만 사용할 수 있습니다. 각 단계가 읽고, 쓰고, 더티하는 블록 수(기본적으로 8 KiB 크기)를 보여줍니다.
- VERBOSE– 이것은 쿼리 실행 계획의 각 단계에 대한 모든 출력 표현식을 표시합니다. 실행자가 자주 실행되는 값비싼 함수에서 시간을 보내는 경우에 유용합니다.
- SETTINGS– 이 매개변수는 기본값과 다른 모든 성능 관련 매개변수를 출력에 표시합니다.
- WAL– PostgreSQL v13부터 이 매개변수는 데이터 수정 명령문으로 인해 발생한 WAL 로그를 표시합니다. ANALYZE와 함께만 사용할 수 있습니다.
- FORMAT– 이는 출력 형식을 지정합니다. 기본값은 TEXT이며 쿼리 성능을 분석하는 데 사용됩니다. 다른 옵션은 XML, JSON 및 YAML이며 자동화된 처리에 사용됩니다.
'공부 > DATABASE' 카테고리의 다른 글
[AWS] ElastiCache 란? (0) | 2024.09.15 |
---|---|
[AWS] RDS 스냅샷 (0) | 2024.09.15 |
SQL Server, MySQL , PostgreSQL 플랜캐시 (0) | 2024.07.20 |
[postgreSQL] 아키텍처와 Shared Buffer (0) | 2024.07.06 |
[AWS] Aurora 공부 2 (Aurora의 기능들) (0) | 2024.07.06 |