database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10391 게시물 읽기
No. 10391
SELECT 및 통계갱신 관련 문의
작성자
초보자
작성일
2023-03-14 09:29ⓒ
2023-03-14 09:32ⓜ
조회수
5,806

안녕하세요. 통계갱신 관련 문의드릴게 있어서 글 올립니다.


A테이블과 B테이블이 존재하며, 1:N관계의 테이블입니다.


A테이블 PK : Z1,Z2,Z3

B테이블 PK : X1(자동증가),Z1,Z2,Z3

B테이블 인덱스 : Z1,Z2,Z3


A테이블에 50만건 저장 후 B테이블에 100만건을 저장한 후, 두 테이블을 조인하여 조회할 때 조회가 되지않습니다.

(각각 조건 넣고 조회 시에는 조회가 잘됩니다.)


ON절 : Z1,Z2,Z3

WHERE절 : Z1,Z2


[EXPLAIN 실행계획]

Nested Loop (cost=1.13..16.52 rows=1 width=70)

 

Join Filter: (a.Z3 = b.Z3)

 

-> Index Scan using A테이블_PK on A테이블 a (cost=0.56..8.32 rows=1 width=62)

 

Index Cond: ((Z1 =44) AND (Z2 = 1))

 

-> Index Scan using B테이블_INDEX on B테이블 b (cost=0.56..8.19 rows=1 width=28)

 

Index Cond: ((Z1 = 44) AND (Z2 = 1))

 

그리고 통계갱신 후에는 다시 조회가 잘 됩니다.


현재는 저장 후 통계갱신(ANALYSE 테이블명)을 하도록 해놨는데 근본적인 문제해결은 아닌듯하여 질문남깁니다.


혹시 해당 원인을 알 수 있을까요? 


* 추가적으로 테스트해보니, 통계갱신 시 ANALYSE A테이블(Z1)만 해도 이후에 조회가 잘됩니다. 

이 글에 대한 댓글이 총 2건 있습니다.

실행 계획 최적화 작업은 통계 정보를 기반으로 합니다. 

테이블의 통계 정보는 autovacuum 작업자가 해당 테이블의 자료가 10% 변경되면 백그라운드로 수집합니다. 

이 수집 주기는 기본값이 1분입니다. 

즉, 대량의 자료변경 작업이 있었고, autovacuum이 그 변경에 따른 자료 통계 정보를 수집하기 전에 select 쿼리가 실행한다면, 가장 최적의 실행계획을 짜지 못해 엉뚱한 실행 계획으로 실행될 수 있습니다. 

analyze 작업을 한 뒤에 select 하면 성능이 제대로 나온다면 어쩔 수 없이 analyze 작업을 한 번 하는 것이 맞을 것 같네요. 

김상기(ioseph)님이 2023-03-15 23:12에 작성한 댓글입니다.

답변감사드립니다^^

초보자님이 2023-03-16 09:03에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
10415DB(postgresql)내에 특정 되지 않은 개수의 데이터 처리는 어떻게 할까요? [1]
kimsunggeun
2023-04-18
5203
10394CSV 파일 가져오기(Import) 실행 시 발생하는 에러 오류 [1]
박상용
2023-04-03
5418
10392Pgadmin에서 동일 쿼리 속도 측정 시 차이 문의 [1]
용암그라탕
2023-03-20
5732
10391SELECT 및 통계갱신 관련 문의 [2]
초보자
2023-03-14
5806
10390postgresql 15 접속 제한, 허용 [2]
박병호
2023-03-11
5920
10388postgres12 replication pg_basebackup 시 멈춤 현상 [1]
슬퍼요
2023-02-23
4505
10386Function 실행시간 문의 [2]
바닝스
2023-01-31
3311
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다