A.4-2 (Postgre) Operations
use-the-index-luke 저자 Markus Winand
Markus Winand는 SQL에 대한 통찰력을 제공하고 다양한 시스템이 SQL을 지원하는 방법을 modern-sql.com 에서 보여줍니다. 이전에 그는 use-the-index-luke.com 을 만들었는데, 지금도 활발하게 유지되고 있습니다. Markus는 winand.at 를 통해 강사, 연사 및 컨설턴트로 고용될 수 있습니다.
You can upload a Korean translation of use-the-index-luke.com on your blog
Thank you from the bottom of my heart to author Makus Winand for allowing me.
These are translations that I use for studying by using a papago (google translate)
The translations may not be correct or there may be a typo.
I'd appreciate it if you could point it out in the comments.
use-the-index-luke.com 의 한글번역본을 블로그에 업로드 해도 된다고
허락해주신 Makus Winand 저자님께 진심으로 감사합니다.
이 번역본들은 제가 공부용도로 번역기(papago, google transrate)를 돌려서
번역한 내용들이라 맞지 않거나, 오타가 있을수 있습니다.
댓글로 지적해주시면 감사하겠습니다.
https://use-the-index-luke.com/sql/explain-plan/postgresql/operations
ㄴPostgreSQL Operations
Index and Table Access
Seq Scan
Seq Scan 작업은 디스크에 저장된 전체 관계(테이블)를
검색합니다. (예 : TABLE ACCESS FULL)
Index Scan
인덱스 스캔은 B-Tree travelsal을 수행하고 leaf node를 통과하여 일치하는 모든 항목을 찾은 다음 해당 테이블 데이터를 가져옵니다. 이는 INDEX RANGE SCAN(인덱스 범위 스캔) 다음에 TABLE ACCESS BY INDEX ROWID 작업과 같습니다. 1장 "SQL 인덱스의 해부학"도 참조하십시오.
소위 Index filter Predicate는 종종 인덱스 검색의 성능 문제를 야기합니다. 다음 섹션에서는 이러한 항목을 식별하는 방법을 설명합니다.
Index Only Scan (since PostgreSQL 9.2)
인덱스 전용 검색은 B-tree travelsal을 수행하고 leaf node를 통과하여 일치하는 모든 항목을 찾습니다.
인덱스에 쿼리를 충족하는 모든 열이 있기 때문에 테이블 액세스가 필요하지 않습니다(예: MVCC 가시성 정보).
자세한 내용은 "인덱스 전용 검색 : 테이블 액세스 방지".
Bitmap Index Scan / Bitmap Heap Scan/ Recheck Cond
Tom Lane's 의
post to the PostgreSQL performance mailing list은
매우 명확하고 간결합니다.
일반 인덱스 검색은 인덱스에서 한 번에 하나의 튜플 포인터를 가져오고 테이블의 해당 튜플을 즉시 방문합니다.
비트맵 검사는 인덱스에서 모든 튜플 포인터를 한번에 가져오고 메모리 내 "비트맵" 데이터 구조를 사용하여 정렬한 다음 실제 튜플 위치 순서로 테이블 튜플을 방문합니다.
Joins
일반적으로 조인 작업은 한 번에 두 개의 테이블만 처리합니다. 쿼리에 조인이 더 많은 경우, 조인은 순차적으로 실행됩니다. 처음 두 테이블, 다음 테이블의 중간 결과입니다. 따라서 조인의 맥락에서 "테이블"이라는 용어는 "중간 결과"를 의미할 수도 있습니다.
Nested Loops
한 테이블에서 결과를 가져오고 첫 번째 테이블에서 각 행에 대한 다른 테이블을 쿼리하여 두 테이블을 조인합니다.
Hash Join /Hash
해시 조인은 조인의 한 쪽에서 후보 레코드를 해시 테이블(계획에서 해시로 표시됨)로 로드한 다음 조인의 다른 쪽에서 각 레코드를 조사합니다.
Merge Join
병합 조인은 두 개의 정렬된 목록을 지퍼처럼 결합합니다. 접합부의 양쪽을 모두 보호해야 합니다.
“Sort Merge” 참조
Sorting and Grouping
Sort / Sort Key
정렬 키에 언급된 열에서 집합을 정렬합니다. 정렬 작업은 파이프라인이 아닌 중간 결과를 구체화하기 위해 많은 양의 메모리가 필요합니다. "색인 순서 기준"을 참조하십시오.
GroupAggregate
절별 그룹에 따라 사전 정렬된 집합을 집계합니다. 이 작업은 많은 양의 데이터(파이프라인)를 버퍼링하지 않습니다. 색인화 그룹 기준을 참조하십시오.
HashAggregate
임시 해시 테이블을 사용하여 레코드를 그룹화합니다. HashAggregate 작업은 사전에 정렬된 데이터 세트를 필요로 하지 않으며, 대신 대량의 메모리를 사용하여 중간 결과를 구현합니다(파이프라인이 아님). 출력이 의미 있는 방식으로 정렬되지 않았습니다. 색인화 그룹 기준을 참조하십시오.
Top-N Queries
Limit
원하는 수의 행을 가져온 경우 기본 작업을 중단합니다. "상위 N개 행 쿼리"도 참조하십시오.
상위 N 쿼리의 효율성은 기본 작업의 실행 모드에 따라 달라집니다. 정렬과 같은 비파이프라인 작업을 중단할 때는 매우 비효율적입니다.
WindowAgg
창 기능의 사용을 나타냅니다. Postgre에서SQL 15 이후의 "실행 조건"은 가능한 상위 N 종료를 나타냅니다. 효율적인 페이지 설정을 위해 창 기능 사용을 참조하십시오.