Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링

Jiho Lee
Jiho Lee자유로운 영혼 at 없음
PG 클러스터 기반의 구성 및
이전, 그리고 인덱스
클러스터링
이지호 search5@gmail.com
목차
PostgreSQL Cluster의 정의
PostgreSQL 클러스터는 언제 쓰나?
PostgreSQL 클러스터를 쉽게 사용하기 위한 여러 명령어들
PostgreSQL 업그레이드를 클러스터 단위로 사용하는 방법
테이블 클러스터링 이야기
PostgreSQL Cluster의 정의
단일 PostgreSQL 서버 인스턴스가 관리하는 데이터베이스 모음
FROM - https://www.postgresql.org/docs/14/tutorial-concepts.html
이 내용을 풀어보면 test, template, template1 등의 데이터베이스가 Postgres 도구 및
프로세스에 의해 생성 및 관리되는 파일 세트가 있는 데이터 디렉토리를 말한다.
이러한 파일에는 데이터베이스, 테이블 및 상호 작용하는 기타 모든 논리적 엔터티가
포함됩니다.
postgres 라는 마스터 프로세스는 실행할 때 이 디렉토리의 파일을 관리하고 콘텐츠를 조작하기
위한 인터페이스를 제공합니다.
PostgreSQL 클러스터는 언제 쓰나?
한 줄 정의 - PostgreSQL 데이터베이스를 사용하려면 처음에 반드시 사용하게 된다.
초기 클러스터는 다음과 같이 만든다.
initdb <data_directory>
또는 다음과 같이 만들 수 있다.
pg_createcluster <option> <version> <cluster_name>
PG 클러스터를 쉽게 사용하기 위한 여러 명령어들
pg_createcluster - 클러스터 생성
pg_ctlcluster - start/stop/restart/reload a PostgreSQL cluster
pg_dropcluster - 클러스터 제거
pg_lsclusters - show information about all PostgreSQL clusters
pg_renamecluster - 클러스터의 이름 변경
pg_upgradecluster - PostgreSQL 클러스터 업그레이드 명령
pg_ctlcluster
pg_ctlcluster [options] cluster-version cluster-name action [-- pg_ctl options]
options = man pg_ctlcluster
action = start|stop|restart|reload|status|promote
promote = 실행 중인 대기 서버에 복구를 종료하고 읽기-쓰기 작업을
시작하도록 명령
pg_ctl options는 pg_ctl가 전달받은 인자를 기술
pg_dropcluster
pg_dropcluster [--stop] cluster-version cluster-name
이 프로그램은 주어진 PostgreSQL 클러스터에 속한 모든 파일을 제거합니다. data, wal 및
tablespace 디렉토리, 로그 파일 및 pg_createcluster(1)에 의해 생성된 모든 구성 파일이 포함됩니다.
이후 구성 디렉토리(/etc/postgresql/version/cluster)가 비어 있으면 이 디렉토리도 제거됩니다.
/var/run/postgresql 또는 /tmp 이외의 빈 소켓 디렉토리도 제거됩니다.
일반적으로 실행 중인 서버가 연결되어 있는 클러스터는 삭제되지 않습니다. 이를 무시하기 위해
--stop 옵션은 파일이 제거되기 전에 서버를 강제로 종료합니다.
pg_lsclusters
pg_lsclusters [options] [version [cluster]]
이 명령은 모든 클러스터의 상태 및 일부 구성 세부 정보를 나열합니다. 버전 및
선택적으로 클러스터 이름이 제공되면 이들만 표시됩니다.
options에 -j 옵션을 제공하면 json 형태의 값도 받을 수 있음(단, libjson-perl 패키지
필요)
pg_renamecluster
pg_renamecluster version oldname newname
pg_renamecluster는 PostgreSQL 클러스터의 이름을 변경합니다. /var/log/postgresql/의 기존 로그
파일도 이름이 바뀝니다. 클러스터는 작업을 위해 중지되고 시작됩니다.
변경된 경로 이름을 참조하도록 postgresql.conf 구성 옵션이 업데이트되었습니다: data_directory,
hba_file, ident_file, external_pid_file, stats_temp_directory, cluster_name.
pg_upgradecluster
pg_upgradecluster [-v newversion] oldversion name [newdatadir]
pg_upgradecluster는 기존 PostgreSQL 서버 클러스터(예: postgres 인스턴스가 제공하는 데이터베이스모음)를
newversion(기본값: 사용 가능한 최신 버전)으로 지정된 새 버전으로 업그레이드합니다. 이전 버전의 구성 파일이 새
클러스터에 복사되고 새 버전에 맞게 조정됩니다. 새 클러스터는 이전 클러스터가 데이터 페이지 체크섬을 사용하는
경우 데이터 페이지 체크섬을 사용하도록 설정됩니다.
업그레이드된클러스터는 원래 포트를 사용하므로 이전 버전의 클러스터는 이전에 사용하지 않은 포트를 사용하도록
구성됩니다. 이전 클러스터는 자동으로 제거되지 않습니다. 업그레이드 후 새 클러스터가 실제로 예상대로
작동하는지 확인하십시오. 그렇다면 pg_dropcluster로 이전 클러스터를 제거해야 합니다. 이전 클러스터는 실수로
변경하는 것을 방지하기 위해 "수동" 시작 모드로 설정되어 있습니다. 이것은 시스템 부팅 시 자동으로 시작되지
않는다는 것을 의미하며, 시작/중지하려면 pg_ctlcluster를 사용해야 합니다.
PG 업그레이드를 클러스터 단위로 사용하는 방법
1. pg_lsclusters로 동작중인 클러스터 확인
2. 동작중인 구 버전 PostgreSQL 정지
3. 동작중인 새 버전의 클러스터 이름 변경 (main -> main_pristine)
4. pg_upgradecluster 명령으로 클러스터 업그레이드
5. 정지해놓았던 PostgreSQL 구동
PG 클러스터의 백업과 이전
PG 클러스터를 정지하고 클러스터 디렉터리를 압축하거나 다른 곳으로 복사하면
완벽한 백업이 됨
단, 복원 시 기존에 사용하던 클러스터 버전과 동일한 버전을 사용해야 함(클러스터
서버가 정지되어 있어야 함)
테이블 클러스터링 이야기 #1
테이블 클러스터링 왜 하나?
데이터를 다른 데이터 보다 더 자주 접근하고 자주 사용하는 데이터들을 그룹핑할 수 있는 인덱스가
존재한다면 클러스터를 사용하는 것이 도움이 된다. 만약 인덱스로 쓰이는 값들 중 특정 범위의 것들을
찾으려고 한다면 또는 단일 인덱스에 여러 행이 매치되는 경우 클러스터는 도움이 된다. 왜냐하면 한번
인덱스가 테이블의 페이지에서 첫번째 행에서 일치하는 것을 찾았다면 다른 모든 일치하는 행들은 같은
페이지 안에 속해있을 확률이 높기 때문에 디스크 접근 을 줄일 수 있고 쿼리의 속도를 높일 수 있다.
테이블 클러스터링 이야기 #2
테이블 클러스터링을 하는 방법 (단, 테이블 클러스터링은 이미 인덱스가 있어야만 사용할 수 있음)
CLUSTER [VERBOSE] table_name [ USING index_name ]
CLUSTER ( option [, ...] ) table_name [ USING index_name ]
CLUSTER [VERBOSE]
where option can be one of:
VERBOSE [ boolean ]
클러스터링이 실행된 백엔드는 pg_stat_progress_cluster 뷰를 통해서 클러스터링 상태를 파악할 수 있다.
테이블 클러스터링 이야기 #3
테이블 클러스터링을 할 때 주의할 내용
- 테이블 클러스터링은 일회성 작업으로 새로 업데이트되는 자료는 테이블 클러스터링으로 변경된
인덱스를 반영하지 않는다.
- 테이블 클러스터링을 하기에 앞서 maintenance_work_mem 설정값을 가능한 큰 값으로 설정하는
것을 권장한다.
- 잦은 클러스터링이 필요한 경우 테이블의 fillfactor 스토리지 파라메터를 기본값 100%에서 조금 더
낮은 값으로 지정하는 것이 유리하다.
- 클러스터링은 운영자가 수동으로 명령을 내려주어야 한다.
테이블 클러스터링 이야기 #4
테이블 클러스터링의 특징
테이블이 클러스터 될 경우 postgreSQL은 어떤 인덱스로 클러스터 되었는지 기억한다. 덕분에 인덱스
이름이 없어도 이전에 클러스터 했던 인덱스로 클러스터링을 해준다.
ALTER TABLE 명령어로 CLUSTER 또는 SET WITHOUT CLUSTER 로 미래에 클러스터에 사용될 인덱스의
설정하거나 이전의 모든 클러스터 관련 설정을 지울 수 있다.
아무런 인수 없이 CLUSTER 를 하면 현재 데이터베이스에서 가장 최근에 클러스터 된 테이블이 다시
클러스터된다. 트랜잭션 블록 내에서는 클러스터를 사용할 수 없다.
테이블이 클러스터 될 때에는 ACCESS EXCLUSICE LOCK이 걸린다. 이 락은 클러스터가 끝날 때 까지 이
테이블 내에서 읽기 쓰기가 모두 제한됨
1 of 16

Recommended

[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개 by
[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개PgDay.Seoul
3K views13 slides
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기 by
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기PgDay.Seoul
3.1K views20 slides
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1 by
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1Seok-joon Yun
2.7K views15 slides
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3 by
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
1.3K views19 slides
[Pgday.Seoul 2020] SQL Tuning by
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL TuningPgDay.Seoul
1.2K views44 slides
PostgreSql vaccum by
PostgreSql vaccumPostgreSql vaccum
PostgreSql vaccum승범 현
2.3K views9 slides

More Related Content

What's hot

KEEP BUFFER 활용 방안_Wh oracle by
KEEP BUFFER 활용 방안_Wh oracleKEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracle엑셈
2K views12 slides
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2 by
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2Seok-joon Yun
1.1K views22 slides
Pgday bdr 천정대 by
Pgday bdr 천정대Pgday bdr 천정대
Pgday bdr 천정대PgDay.Seoul
1.6K views28 slides
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle by
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle엑셈
1.2K views11 slides
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4 by
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
1.6K views26 slides
SQL Profile을 이용한 SQL Plan 변경_Wh oracle by
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle엑셈
1.7K views9 slides

What's hot(20)

KEEP BUFFER 활용 방안_Wh oracle by 엑셈
KEEP BUFFER 활용 방안_Wh oracleKEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracle
엑셈2K views
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2 by Seok-joon Yun
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
Seok-joon Yun1.1K views
Pgday bdr 천정대 by PgDay.Seoul
Pgday bdr 천정대Pgday bdr 천정대
Pgday bdr 천정대
PgDay.Seoul1.6K views
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle by 엑셈
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
엑셈1.2K views
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4 by Seok-joon Yun
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun1.6K views
SQL Profile을 이용한 SQL Plan 변경_Wh oracle by 엑셈
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
엑셈1.7K views
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL by PgDay.Seoul
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
PgDay.Seoul420 views
SQL 튜닝에 Dictionary View 활용하기 Part2_Wh oracle by 엑셈
SQL 튜닝에 Dictionary View 활용하기 Part2_Wh oracleSQL 튜닝에 Dictionary View 활용하기 Part2_Wh oracle
SQL 튜닝에 Dictionary View 활용하기 Part2_Wh oracle
엑셈658 views
Bind Peeking 한계에 따른 Adaptive Cursor Sharing 등장_Wh oracle by 엑셈
Bind Peeking 한계에 따른 Adaptive Cursor Sharing 등장_Wh oracleBind Peeking 한계에 따른 Adaptive Cursor Sharing 등장_Wh oracle
Bind Peeking 한계에 따른 Adaptive Cursor Sharing 등장_Wh oracle
엑셈464 views
Result Cache 동작원리 및 활용방안_Wh oracle by 엑셈
Result Cache 동작원리 및 활용방안_Wh oracleResult Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracle
엑셈1.6K views
Oracle Query Optimizer 관련 Parameter_OracleParameter by 엑셈
Oracle Query Optimizer 관련 Parameter_OracleParameterOracle Query Optimizer 관련 Parameter_OracleParameter
Oracle Query Optimizer 관련 Parameter_OracleParameter
엑셈835 views
ORACLE EXADATA HCC 압축방식 이해하기_Wh oracle by 엑셈
ORACLE EXADATA HCC 압축방식 이해하기_Wh oracleORACLE EXADATA HCC 압축방식 이해하기_Wh oracle
ORACLE EXADATA HCC 압축방식 이해하기_Wh oracle
엑셈1.7K views
오렌지6.0 교육자료 by Seok-joon Yun
오렌지6.0 교육자료오렌지6.0 교육자료
오렌지6.0 교육자료
Seok-joon Yun23.2K views
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat by Seok-joon Yun
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
Seok-joon Yun2.8K views
PostgreSQL Deep Internal by EXEM
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep Internal
EXEM2.5K views
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀 by EXEM
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM601 views
대량의 DML 작업에 대한 성능개선방안_Wh oracle by 엑셈
대량의 DML 작업에 대한 성능개선방안_Wh oracle대량의 DML 작업에 대한 성능개선방안_Wh oracle
대량의 DML 작업에 대한 성능개선방안_Wh oracle
엑셈3.8K views
BlOOM FILTER의 이해와 활용방법_Wh oracle by 엑셈
BlOOM FILTER의 이해와 활용방법_Wh oracleBlOOM FILTER의 이해와 활용방법_Wh oracle
BlOOM FILTER의 이해와 활용방법_Wh oracle
엑셈1.5K views
Pg day seoul 2016 session_02_v1.0_ff by PgDay.Seoul
Pg day seoul 2016 session_02_v1.0_ffPg day seoul 2016 session_02_v1.0_ff
Pg day seoul 2016 session_02_v1.0_ff
PgDay.Seoul449 views
WINDOW FUNCTION의 이해와 활용방법_Wh oracle by 엑셈
WINDOW FUNCTION의 이해와 활용방법_Wh oracleWINDOW FUNCTION의 이해와 활용방법_Wh oracle
WINDOW FUNCTION의 이해와 활용방법_Wh oracle
엑셈654 views

Similar to Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링

[pgday.Seoul 2022] PostgreSQL구조 - 윤성재 by
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
413 views23 slides
My sql특징 정리 by
My sql특징 정리My sql특징 정리
My sql특징 정리parktaesoon
537 views7 slides
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장) by
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)Minchul Jung
347 views22 slides
대규모 서비스를 지탱하는 기술 Ch 4 by
대규모 서비스를 지탱하는 기술 Ch 4대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4ukjinkwoun
1.3K views24 slides
Glusterfs 파일시스템 구성_및 운영가이드_v2.0 by
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0sprdd
7.4K views49 slides

Similar to Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링(20)

[pgday.Seoul 2022] PostgreSQL구조 - 윤성재 by PgDay.Seoul
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul413 views
My sql특징 정리 by parktaesoon
My sql특징 정리My sql특징 정리
My sql특징 정리
parktaesoon537 views
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장) by Minchul Jung
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
Minchul Jung347 views
대규모 서비스를 지탱하는 기술 Ch 4 by ukjinkwoun
대규모 서비스를 지탱하는 기술 Ch 4대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4
ukjinkwoun1.3K views
Glusterfs 파일시스템 구성_및 운영가이드_v2.0 by sprdd
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
sprdd7.4K views
Glusterfs 구성제안 및_운영가이드_v2.0 by sprdd
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0
sprdd15.2K views
Memcached의 확장성 개선 by NAVER D2
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선
NAVER D221.2K views
제5장 집계함수, 그룹함수 사용하기 by sang doc Lee
제5장 집계함수, 그룹함수 사용하기제5장 집계함수, 그룹함수 사용하기
제5장 집계함수, 그룹함수 사용하기
sang doc Lee584 views
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능' by sung ki choi
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
sung ki choi5.7K views
Presto User & Admin Guide by JEONGPHIL HAN
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
JEONGPHIL HAN384 views
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블 by Gordon Lee
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블
Gordon Lee596 views
Glusterfs 구성제안서 v1.0 by sprdd
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
sprdd1.5K views
Glusterfs 구성제안 v1.0 by sprdd
Glusterfs 구성제안 v1.0Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0
sprdd484 views
Glusterfs 구성제안서 v1.0 by sprdd
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
sprdd2.1K views
Glusterfs 소개 v1.0_난공불락세미나 by sprdd
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
sprdd8.6K views
DBMS 아키텍처 by HaksunLEE6
DBMS 아키텍처DBMS 아키텍처
DBMS 아키텍처
HaksunLEE664 views

More from Jiho Lee

게임으로 배우는 코딩 - 마인크래프를 중심으로 by
게임으로 배우는 코딩 - 마인크래프를 중심으로게임으로 배우는 코딩 - 마인크래프를 중심으로
게임으로 배우는 코딩 - 마인크래프를 중심으로Jiho Lee
686 views23 slides
개발자, 그 이상 그리고 그 이하 by
개발자, 그 이상 그리고 그 이하개발자, 그 이상 그리고 그 이하
개발자, 그 이상 그리고 그 이하Jiho Lee
345 views10 slides
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업 by
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업Jiho Lee
2K views23 slides
PostgreSQL로 배우는 SQL 기초 by
PostgreSQL로 배우는 SQL 기초PostgreSQL로 배우는 SQL 기초
PostgreSQL로 배우는 SQL 기초Jiho Lee
3K views59 slides
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관 by
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관Jiho Lee
231 views49 slides
사물 인터넷과 인공지능이 만나는 세계 by
사물 인터넷과 인공지능이 만나는 세계사물 인터넷과 인공지능이 만나는 세계
사물 인터넷과 인공지능이 만나는 세계Jiho Lee
333 views25 slides

More from Jiho Lee(15)

게임으로 배우는 코딩 - 마인크래프를 중심으로 by Jiho Lee
게임으로 배우는 코딩 - 마인크래프를 중심으로게임으로 배우는 코딩 - 마인크래프를 중심으로
게임으로 배우는 코딩 - 마인크래프를 중심으로
Jiho Lee686 views
개발자, 그 이상 그리고 그 이하 by Jiho Lee
개발자, 그 이상 그리고 그 이하개발자, 그 이상 그리고 그 이하
개발자, 그 이상 그리고 그 이하
Jiho Lee345 views
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업 by Jiho Lee
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
Jiho Lee2K views
PostgreSQL로 배우는 SQL 기초 by Jiho Lee
PostgreSQL로 배우는 SQL 기초PostgreSQL로 배우는 SQL 기초
PostgreSQL로 배우는 SQL 기초
Jiho Lee3K views
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관 by Jiho Lee
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
Jiho Lee231 views
사물 인터넷과 인공지능이 만나는 세계 by Jiho Lee
사물 인터넷과 인공지능이 만나는 세계사물 인터넷과 인공지능이 만나는 세계
사물 인터넷과 인공지능이 만나는 세계
Jiho Lee333 views
인간이 아이에게 줄 수 있는 가장 최선의 것 by Jiho Lee
인간이 아이에게 줄 수 있는 가장 최선의 것인간이 아이에게 줄 수 있는 가장 최선의 것
인간이 아이에게 줄 수 있는 가장 최선의 것
Jiho Lee289 views
파이콘 2017 그만퇴근합시다_이지호 by Jiho Lee
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
Jiho Lee2.3K views
소물 2017 네트워크로 감성 나누기 by Jiho Lee
소물 2017 네트워크로 감성 나누기소물 2017 네트워크로 감성 나누기
소물 2017 네트워크로 감성 나누기
Jiho Lee242 views
10월의 하늘_2016_진도 공공도서관_이지호 by Jiho Lee
10월의 하늘_2016_진도 공공도서관_이지호10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호
Jiho Lee386 views
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다 by Jiho Lee
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
Jiho Lee584 views
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공... by Jiho Lee
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
Jiho Lee3.4K views
2016 py con2016_lightingtalk_php to python by Jiho Lee
2016 py con2016_lightingtalk_php to python2016 py con2016_lightingtalk_php to python
2016 py con2016_lightingtalk_php to python
Jiho Lee964 views
Django와 flask by Jiho Lee
Django와 flaskDjango와 flask
Django와 flask
Jiho Lee3K views
라이트닝 토크 2015 파이콘 by Jiho Lee
라이트닝 토크 2015 파이콘라이트닝 토크 2015 파이콘
라이트닝 토크 2015 파이콘
Jiho Lee1.7K views

Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링

  • 1. PG 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링 이지호 search5@gmail.com
  • 2. 목차 PostgreSQL Cluster의 정의 PostgreSQL 클러스터는 언제 쓰나? PostgreSQL 클러스터를 쉽게 사용하기 위한 여러 명령어들 PostgreSQL 업그레이드를 클러스터 단위로 사용하는 방법 테이블 클러스터링 이야기
  • 3. PostgreSQL Cluster의 정의 단일 PostgreSQL 서버 인스턴스가 관리하는 데이터베이스 모음 FROM - https://www.postgresql.org/docs/14/tutorial-concepts.html 이 내용을 풀어보면 test, template, template1 등의 데이터베이스가 Postgres 도구 및 프로세스에 의해 생성 및 관리되는 파일 세트가 있는 데이터 디렉토리를 말한다. 이러한 파일에는 데이터베이스, 테이블 및 상호 작용하는 기타 모든 논리적 엔터티가 포함됩니다. postgres 라는 마스터 프로세스는 실행할 때 이 디렉토리의 파일을 관리하고 콘텐츠를 조작하기 위한 인터페이스를 제공합니다.
  • 4. PostgreSQL 클러스터는 언제 쓰나? 한 줄 정의 - PostgreSQL 데이터베이스를 사용하려면 처음에 반드시 사용하게 된다. 초기 클러스터는 다음과 같이 만든다. initdb <data_directory> 또는 다음과 같이 만들 수 있다. pg_createcluster <option> <version> <cluster_name>
  • 5. PG 클러스터를 쉽게 사용하기 위한 여러 명령어들 pg_createcluster - 클러스터 생성 pg_ctlcluster - start/stop/restart/reload a PostgreSQL cluster pg_dropcluster - 클러스터 제거 pg_lsclusters - show information about all PostgreSQL clusters pg_renamecluster - 클러스터의 이름 변경 pg_upgradecluster - PostgreSQL 클러스터 업그레이드 명령
  • 6. pg_ctlcluster pg_ctlcluster [options] cluster-version cluster-name action [-- pg_ctl options] options = man pg_ctlcluster action = start|stop|restart|reload|status|promote promote = 실행 중인 대기 서버에 복구를 종료하고 읽기-쓰기 작업을 시작하도록 명령 pg_ctl options는 pg_ctl가 전달받은 인자를 기술
  • 7. pg_dropcluster pg_dropcluster [--stop] cluster-version cluster-name 이 프로그램은 주어진 PostgreSQL 클러스터에 속한 모든 파일을 제거합니다. data, wal 및 tablespace 디렉토리, 로그 파일 및 pg_createcluster(1)에 의해 생성된 모든 구성 파일이 포함됩니다. 이후 구성 디렉토리(/etc/postgresql/version/cluster)가 비어 있으면 이 디렉토리도 제거됩니다. /var/run/postgresql 또는 /tmp 이외의 빈 소켓 디렉토리도 제거됩니다. 일반적으로 실행 중인 서버가 연결되어 있는 클러스터는 삭제되지 않습니다. 이를 무시하기 위해 --stop 옵션은 파일이 제거되기 전에 서버를 강제로 종료합니다.
  • 8. pg_lsclusters pg_lsclusters [options] [version [cluster]] 이 명령은 모든 클러스터의 상태 및 일부 구성 세부 정보를 나열합니다. 버전 및 선택적으로 클러스터 이름이 제공되면 이들만 표시됩니다. options에 -j 옵션을 제공하면 json 형태의 값도 받을 수 있음(단, libjson-perl 패키지 필요)
  • 9. pg_renamecluster pg_renamecluster version oldname newname pg_renamecluster는 PostgreSQL 클러스터의 이름을 변경합니다. /var/log/postgresql/의 기존 로그 파일도 이름이 바뀝니다. 클러스터는 작업을 위해 중지되고 시작됩니다. 변경된 경로 이름을 참조하도록 postgresql.conf 구성 옵션이 업데이트되었습니다: data_directory, hba_file, ident_file, external_pid_file, stats_temp_directory, cluster_name.
  • 10. pg_upgradecluster pg_upgradecluster [-v newversion] oldversion name [newdatadir] pg_upgradecluster는 기존 PostgreSQL 서버 클러스터(예: postgres 인스턴스가 제공하는 데이터베이스모음)를 newversion(기본값: 사용 가능한 최신 버전)으로 지정된 새 버전으로 업그레이드합니다. 이전 버전의 구성 파일이 새 클러스터에 복사되고 새 버전에 맞게 조정됩니다. 새 클러스터는 이전 클러스터가 데이터 페이지 체크섬을 사용하는 경우 데이터 페이지 체크섬을 사용하도록 설정됩니다. 업그레이드된클러스터는 원래 포트를 사용하므로 이전 버전의 클러스터는 이전에 사용하지 않은 포트를 사용하도록 구성됩니다. 이전 클러스터는 자동으로 제거되지 않습니다. 업그레이드 후 새 클러스터가 실제로 예상대로 작동하는지 확인하십시오. 그렇다면 pg_dropcluster로 이전 클러스터를 제거해야 합니다. 이전 클러스터는 실수로 변경하는 것을 방지하기 위해 "수동" 시작 모드로 설정되어 있습니다. 이것은 시스템 부팅 시 자동으로 시작되지 않는다는 것을 의미하며, 시작/중지하려면 pg_ctlcluster를 사용해야 합니다.
  • 11. PG 업그레이드를 클러스터 단위로 사용하는 방법 1. pg_lsclusters로 동작중인 클러스터 확인 2. 동작중인 구 버전 PostgreSQL 정지 3. 동작중인 새 버전의 클러스터 이름 변경 (main -> main_pristine) 4. pg_upgradecluster 명령으로 클러스터 업그레이드 5. 정지해놓았던 PostgreSQL 구동
  • 12. PG 클러스터의 백업과 이전 PG 클러스터를 정지하고 클러스터 디렉터리를 압축하거나 다른 곳으로 복사하면 완벽한 백업이 됨 단, 복원 시 기존에 사용하던 클러스터 버전과 동일한 버전을 사용해야 함(클러스터 서버가 정지되어 있어야 함)
  • 13. 테이블 클러스터링 이야기 #1 테이블 클러스터링 왜 하나? 데이터를 다른 데이터 보다 더 자주 접근하고 자주 사용하는 데이터들을 그룹핑할 수 있는 인덱스가 존재한다면 클러스터를 사용하는 것이 도움이 된다. 만약 인덱스로 쓰이는 값들 중 특정 범위의 것들을 찾으려고 한다면 또는 단일 인덱스에 여러 행이 매치되는 경우 클러스터는 도움이 된다. 왜냐하면 한번 인덱스가 테이블의 페이지에서 첫번째 행에서 일치하는 것을 찾았다면 다른 모든 일치하는 행들은 같은 페이지 안에 속해있을 확률이 높기 때문에 디스크 접근 을 줄일 수 있고 쿼리의 속도를 높일 수 있다.
  • 14. 테이블 클러스터링 이야기 #2 테이블 클러스터링을 하는 방법 (단, 테이블 클러스터링은 이미 인덱스가 있어야만 사용할 수 있음) CLUSTER [VERBOSE] table_name [ USING index_name ] CLUSTER ( option [, ...] ) table_name [ USING index_name ] CLUSTER [VERBOSE] where option can be one of: VERBOSE [ boolean ] 클러스터링이 실행된 백엔드는 pg_stat_progress_cluster 뷰를 통해서 클러스터링 상태를 파악할 수 있다.
  • 15. 테이블 클러스터링 이야기 #3 테이블 클러스터링을 할 때 주의할 내용 - 테이블 클러스터링은 일회성 작업으로 새로 업데이트되는 자료는 테이블 클러스터링으로 변경된 인덱스를 반영하지 않는다. - 테이블 클러스터링을 하기에 앞서 maintenance_work_mem 설정값을 가능한 큰 값으로 설정하는 것을 권장한다. - 잦은 클러스터링이 필요한 경우 테이블의 fillfactor 스토리지 파라메터를 기본값 100%에서 조금 더 낮은 값으로 지정하는 것이 유리하다. - 클러스터링은 운영자가 수동으로 명령을 내려주어야 한다.
  • 16. 테이블 클러스터링 이야기 #4 테이블 클러스터링의 특징 테이블이 클러스터 될 경우 postgreSQL은 어떤 인덱스로 클러스터 되었는지 기억한다. 덕분에 인덱스 이름이 없어도 이전에 클러스터 했던 인덱스로 클러스터링을 해준다. ALTER TABLE 명령어로 CLUSTER 또는 SET WITHOUT CLUSTER 로 미래에 클러스터에 사용될 인덱스의 설정하거나 이전의 모든 클러스터 관련 설정을 지울 수 있다. 아무런 인수 없이 CLUSTER 를 하면 현재 데이터베이스에서 가장 최근에 클러스터 된 테이블이 다시 클러스터된다. 트랜잭션 블록 내에서는 클러스터를 사용할 수 없다. 테이블이 클러스터 될 때에는 ACCESS EXCLUSICE LOCK이 걸린다. 이 락은 클러스터가 끝날 때 까지 이 테이블 내에서 읽기 쓰기가 모두 제한됨