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 9656 게시물 읽기
No. 9656
Hashjoin에서 버켓수를 늘리고 싶은데 어떻게 하면 될까요?
작성자
박종혁(akindo19)
작성일
2016-04-08 11:29
조회수
7,801

안녕하세요.

PostgreSQL의 Hashjoin과정에 대해 궁금하여 공부하고 있는 학생입니다.

혹시 work_mem을 변경하는 방법 말고는, bucket수를 늘리고 싶은 방법은 없을까요?

혹은, 한 버켓에 할당하는 메모리크기를 바꾸는 방법은 없을까요?

 

감사합니다.

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

hash join 은 해시맵을 만들 메모리가 넉넉한가를 보고 만듭니다.

물론

http://postgresql.kr/docs/current/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS

페이지에서 다루고 있는 각 환경 변수값들을 이용해서,

추정할 뿐입니다.

 

실행 계획을 이 값들을 조정해서 바꿀 수는 있겠지만,

hash join을 위한 메모리를 더 많이 할당해서, nested loop 사용을 피하겠다는 방식은 불가능합니다.

그저 최적화기가 hash join을 선택했다면, 세션이 자기가 쓸 수 있을 만큼 메모리를 쓰다가 모자라면,

임시 해시 테이블로 디스크에 쓰고, 그것을 참조합니다.

 

세션이 그 hash 메모리를 위한 버켓도 PostgreSQL에서 사용하는 기본 페이지 8k바이트 단위로 움직일겁니다. 구체적으로 안봐서 모름.

이 부분은 아마도 컴파일 시 지정하는 블럭 크기를 바꾸면 같이 바뀌지 않을까합니다.

 

김상기(ioseph)님이 2016-04-08 19:11에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9659PostgreSQL에서 Sort-Merge-Join이 아직 고려되는 이유가 궁금합니다. [1]
박종혁
2016-04-11
8234
9658ecpg 에서 -D 옵션 관련문의 드립니다. [1]
박정희
2016-04-11
8071
9657오라클에서 postgresql로 데이터 옮기는방법..? [4]
권민정
2016-04-11
8794
9656Hashjoin에서 버켓수를 늘리고 싶은데 어떻게 하면 될까요? [1]
박종혁
2016-04-08
7801
9655INCLUDE Path 지정할수 있나요? [2]
박정희
2016-04-07
7744
9653postGis db를 berkeley db로 변환하는 방법 [1]
박수지
2016-04-01
7769
9652crosstab 빈값이 있을때 질문입니다. [1]
최대호
2016-03-24
7898
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다