Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
PgDay.Seoul
PDF, PPTX
2,421 views
PostgreSQL 공간관리 살펴보기 이근오
deep dive about freespace map, visibility map for postgresql
Software
◦
Read more
5
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 45
2
/ 45
3
/ 45
4
/ 45
5
/ 45
Most read
6
/ 45
7
/ 45
8
/ 45
9
/ 45
10
/ 45
Most read
11
/ 45
12
/ 45
Most read
13
/ 45
14
/ 45
15
/ 45
16
/ 45
17
/ 45
18
/ 45
19
/ 45
20
/ 45
21
/ 45
22
/ 45
23
/ 45
24
/ 45
25
/ 45
26
/ 45
27
/ 45
28
/ 45
29
/ 45
30
/ 45
31
/ 45
32
/ 45
33
/ 45
34
/ 45
35
/ 45
36
/ 45
37
/ 45
38
/ 45
39
/ 45
40
/ 45
41
/ 45
42
/ 45
43
/ 45
44
/ 45
45
/ 45
More Related Content
PDF
[Pgday.Seoul 2020] SQL Tuning
by
PgDay.Seoul
PDF
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
by
PgDay.Seoul
PDF
PostgreSQL Deep Internal
by
EXEM
PPTX
MySQL_MariaDB로의_전환_기술요소-202212.pptx
by
NeoClova
PDF
MySQL Advanced Administrator 2021 - 네오클로바
by
NeoClova
PPTX
MySQL8.0_performance_schema.pptx
by
NeoClova
PPTX
Apache spark 소개 및 실습
by
동현 강
PDF
[2018] MySQL 이중화 진화기
by
NHN FORWARD
[Pgday.Seoul 2020] SQL Tuning
by
PgDay.Seoul
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
by
PgDay.Seoul
PostgreSQL Deep Internal
by
EXEM
MySQL_MariaDB로의_전환_기술요소-202212.pptx
by
NeoClova
MySQL Advanced Administrator 2021 - 네오클로바
by
NeoClova
MySQL8.0_performance_schema.pptx
by
NeoClova
Apache spark 소개 및 실습
by
동현 강
[2018] MySQL 이중화 진화기
by
NHN FORWARD
What's hot
PDF
Mvcc in postgreSQL 권건우
by
PgDay.Seoul
PDF
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
by
PgDay.Seoul
PDF
Tuning Autovacuum in Postgresql
by
Mydbops
PDF
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
by
PgDay.Seoul
PDF
MySQL Index Cookbook
by
MYXPLAIN
PDF
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
by
PgDay.Seoul
PPTX
MySQL_MariaDB-성능개선-202201.pptx
by
NeoClova
PDF
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
by
PgDay.Seoul
PDF
Common Strategies for Improving Performance on Your Delta Lakehouse
by
Databricks
PDF
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
by
PgDay.Seoul
PDF
PostgreSQL Performance Tuning
by
elliando dias
PDF
Linux tuning to improve PostgreSQL performance
by
PostgreSQL-Consulting
PDF
Advanced MySQL Query Tuning
by
Alexander Rubin
PPTX
PostgreSQL- An Introduction
by
Smita Prasad
PDF
InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...
by
InfluxData
PPTX
PostgreSQL Database Slides
by
metsarin
PDF
MySQL GTID 시작하기
by
I Goo Lee
PDF
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
by
PgDay.Seoul
PDF
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
by
PgDay.Seoul
PDF
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
by
Jim Mlodgenski
Mvcc in postgreSQL 권건우
by
PgDay.Seoul
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
by
PgDay.Seoul
Tuning Autovacuum in Postgresql
by
Mydbops
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
by
PgDay.Seoul
MySQL Index Cookbook
by
MYXPLAIN
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
by
PgDay.Seoul
MySQL_MariaDB-성능개선-202201.pptx
by
NeoClova
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
by
PgDay.Seoul
Common Strategies for Improving Performance on Your Delta Lakehouse
by
Databricks
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
by
PgDay.Seoul
PostgreSQL Performance Tuning
by
elliando dias
Linux tuning to improve PostgreSQL performance
by
PostgreSQL-Consulting
Advanced MySQL Query Tuning
by
Alexander Rubin
PostgreSQL- An Introduction
by
Smita Prasad
InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...
by
InfluxData
PostgreSQL Database Slides
by
metsarin
MySQL GTID 시작하기
by
I Goo Lee
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
by
PgDay.Seoul
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
by
PgDay.Seoul
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
by
Jim Mlodgenski
Similar to PostgreSQL 공간관리 살펴보기 이근오
PDF
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
PDF
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
PDF
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
PDF
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
by
Seok-joon Yun
PDF
Amazon aurora 2
by
EXEM
PPTX
오라클 DB 아키텍처와 튜닝
by
철민 권
PPTX
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
by
BJ Jang
PDF
대량의 DML 작업에 대한 성능개선방안_Wh oracle
by
엑셈
PPTX
PostgreSql vaccum
by
승범 현
PDF
AWS Builders_AWS 300_NoSQL은 왜 어렵게 느껴지는가 왜 필요하며 어떻게 적...
by
ngvn8hwyh4
DOC
Oracle History #7
by
Kyung Sang Jang
PDF
데이터야 안전하게 놀아보자.V.1
by
Dongchan Sung
PDF
Let's Play with Data Safely
by
Dataya Nolja
PDF
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
PDF
InfiniFlux vs RDBMS
by
InfiniFlux Korea
PPTX
20251212_Kit-Works Team Study_RDBMS 내부와 유지보수 전략.pptx
by
Wonjun Hwang
PPTX
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
by
용호 최
PPTX
amugona study 1회
by
who7117
PDF
[212]검색엔진dot의내부 강희구최규식
by
NAVER D2
PDF
Rankwave moment™ desc3
by
Sungwha Shim
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
by
Seok-joon Yun
Amazon aurora 2
by
EXEM
오라클 DB 아키텍처와 튜닝
by
철민 권
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
by
BJ Jang
대량의 DML 작업에 대한 성능개선방안_Wh oracle
by
엑셈
PostgreSql vaccum
by
승범 현
AWS Builders_AWS 300_NoSQL은 왜 어렵게 느껴지는가 왜 필요하며 어떻게 적...
by
ngvn8hwyh4
Oracle History #7
by
Kyung Sang Jang
데이터야 안전하게 놀아보자.V.1
by
Dongchan Sung
Let's Play with Data Safely
by
Dataya Nolja
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
by
EXEM
InfiniFlux vs RDBMS
by
InfiniFlux Korea
20251212_Kit-Works Team Study_RDBMS 내부와 유지보수 전략.pptx
by
Wonjun Hwang
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
by
용호 최
amugona study 1회
by
who7117
[212]검색엔진dot의내부 강희구최규식
by
NAVER D2
Rankwave moment™ desc3
by
Sungwha Shim
More from PgDay.Seoul
PDF
[pgday.Seoul 2022] PostgreSQL with Google Cloud
by
PgDay.Seoul
PDF
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
by
PgDay.Seoul
PDF
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
by
PgDay.Seoul
PDF
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
by
PgDay.Seoul
PDF
[Pgday.Seoul 2019] Advanced FDW
by
PgDay.Seoul
PDF
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
by
PgDay.Seoul
PDF
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
by
PgDay.Seoul
PDF
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPA
by
PgDay.Seoul
PDF
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
by
PgDay.Seoul
PDF
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기
by
PgDay.Seoul
PDF
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
by
PgDay.Seoul
PDF
[Pgday.Seoul 2018] replacing oracle with edb postgres
by
PgDay.Seoul
PDF
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
by
PgDay.Seoul
PDF
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
by
PgDay.Seoul
PDF
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
by
PgDay.Seoul
PDF
[Pgday.Seoul 2017] 4. Composite Type/JSON 파라미터를 활용한 TVP구현(with C#, JAVA) - 지현명
by
PgDay.Seoul
PDF
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
by
PgDay.Seoul
PDF
PostgreSQL 9.6 새 기능 소개
by
PgDay.Seoul
PDF
pg_hba.conf 이야기
by
PgDay.Seoul
PDF
Pgday bdr 천정대
by
PgDay.Seoul
[pgday.Seoul 2022] PostgreSQL with Google Cloud
by
PgDay.Seoul
[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기
by
PgDay.Seoul
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
by
PgDay.Seoul
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
by
PgDay.Seoul
[Pgday.Seoul 2019] Advanced FDW
by
PgDay.Seoul
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
by
PgDay.Seoul
[Pgday.Seoul 2018] PostgreSQL 성능을 위해 개발된 라이브러리 OS 소개 apposha
by
PgDay.Seoul
[Pgday.Seoul 2018] PostgreSQL Authentication with FreeIPA
by
PgDay.Seoul
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
by
PgDay.Seoul
[Pgday.Seoul 2018] AWS Cloud 환경에서 PostgreSQL 구축하기
by
PgDay.Seoul
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
by
PgDay.Seoul
[Pgday.Seoul 2018] replacing oracle with edb postgres
by
PgDay.Seoul
[Pgday.Seoul 2017] 6. GIN vs GiST 인덱스 이야기 - 박진우
by
PgDay.Seoul
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
by
PgDay.Seoul
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
by
PgDay.Seoul
[Pgday.Seoul 2017] 4. Composite Type/JSON 파라미터를 활용한 TVP구현(with C#, JAVA) - 지현명
by
PgDay.Seoul
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
by
PgDay.Seoul
PostgreSQL 9.6 새 기능 소개
by
PgDay.Seoul
pg_hba.conf 이야기
by
PgDay.Seoul
Pgday bdr 천정대
by
PgDay.Seoul
PostgreSQL 공간관리 살펴보기 이근오
1.
PGDay Seoul 2016 2016.10.15 PostgreSQL
공간 관리 살펴보기 (PostgreSQL 9.4) 이근오
2.
Table of Agenda Ⅱ.
VM과 FSM 구조 분석 Ⅰ. Vacuum 시의 공간관리
3.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리
4.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리1. Vacuum 정의 및 필요성 ‘Multi Generation Architecture’의 단점은? 데이터의 변경이 빈번할 경우, 파일 사이즈가 커져 심각한 성능저하의 원인이 될 수 있다! 그렇다면 이를 해결해주는 기능은? VACUUM!
5.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리1. Vacuum 정의 및 필요성 1) 변경 및 삭제된 자료들이 차지하고 있는 디스크 공간을 확보하기 위해서 2) transaction id가 겹침(wraparound)으로 인해 오래된 자료의 손실이 발생하는 것을 방지하기 위해서 3) Query Planner가 사용할 자료의 통계 정보를 갱신하기 위해서 4) 실자료 지도(visibility map, VM)의 정보를 갱신하기 위해서 (VM은 인덱스 전용의 검색 성능을 향상시키기 위해 사용함) 2. Vacuum의 필요성 1. Vacuum의 정의 PostgreSQL에서 특정 튜플을 update 하거나 delete 한다고 해서 해당 영역이 자동으로 재사용되거나 사라지지 않는다. 이렇게 오래된 영역을 정리하여 공간을 반환하는 명령어가 Vacuum이다. ≒ 디스크 조각 모음 VM (Visibility Map) dead tuple의 존재 여부를 알려주는 정보 • dead tuple이 포함되지 않은 경우 : 1 • dead tuple이 포함되거나 확실하지 않은 경우 : 0
6.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리2. Vacuum 실행 구조 ① insert into t2 values('A1001','A','A'); insert into t2 values('A1002','A','A'); ② update t2 set c2='B' where c1 = 'A1001' ; ③ 표준 vacuum ④ Full vacuum 'A1001',‘B','A'
7.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum ① insert into t2 values('A1001','A','A'); insert into t2 values('A1002','A','A'); ③ 표준 vacuum ④ Full vacuum ② update t2 set c2='B' where c1 = 'A1001' ; pd_lower pd_upper itemst_xmin t_infomask2 t_xmax t_infomask pd_prune_xid
8.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리 Special Page Header 'A1001','A','A''A1002','A','A' line pointer Tuple Header 3. 표준 vacuum VS Full vacuum • insert into t2 values('A1001','A','A'); • insert into t2 values('A1002','A','A'); 2000 801f
9.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리 • SELECT * from heap_page_items(get_raw_page('t2', 0)); 3. 표준 vacuum VS Full vacuum ① insert into t2 values('A1001','A','A'); insert into t2 values('A1002','A','A'); create table t2 ( c1 char(19),c2 char(8),c3 char(8) ); • extension module create extension pageinspect;
10.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum • update t2 set c2='B' where c1 = 'A1001' ; Special Page Header 'A1001','A','A''A1002','A','A''A1001', 'B','A' line pointer Tuple Header 2400 401f 새로운 위치/에 변경 데이터인 “B” 레코드를 추가 “A1001” 원본은 “xmax” 값을 변경
11.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum ② update t2 set c2='B' where c1 = 'A1001' ; • SELECT * from heap_page_items(get_raw_page('t2', 0)); • select xmin,xmax,ctid, * from t2; “A1001” item 의 xmin 변경됨 “A1001” 원본은 “xmax” 값을 변경
12.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum ② update t2 set c2='B' where c1 = 'A1001' ; • SELECT * from heap_page_items(get_raw_page('t2', 0)); • select xmin,xmax,ctid, * from t2; “A1001” item 의 xmin 변경됨 “A1001” 원본은 “xmax” 값을 변경 새로운 위치에 변경 데이터인 “B” 레코드를 추가
13.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum Special Page Header line pointer Tuple Header 'A1002','A','A''A1001', 'B','A' • 표준 Vacuum A의 line pointer는 삭제되나 공간은 남아있고, items에는 공간도 삭제된다. free space가 증가된다. 그러나 items에서 실제로 데이터있는 것처럼 보인다. 2400 801f A1001 위치도 아래로 변경 A1002가 제일 아래로 내려감 A1001 원래 위치의 데이터는 그대로 두고 Item Id Data만 삭제 'A1001',‘B','A'
14.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum ③ 표준 vacuum A1001 원래 위치의 데이터는 그대로 두고 Item Id Data만 삭제 • SELECT * from heap_page_items(get_raw_page('t2', 0)); • select xmin,xmax,ctid, * from t2;
15.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum ③ 표준 vacuum A1001 원래 위치의 데이터는 그대로 두고 Item Id Data만 삭제 • SELECT * from heap_page_items(get_raw_page('t2', 0)); • select xmin,xmax,ctid, * from t2; A1002가 제일 아래로 내려감
16.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum ③ 표준 vacuum A1001 원래 위치의 데이터는 그대로 두고 Item Id Data만 삭제 • SELECT * from heap_page_items(get_raw_page('t2', 0)); • select xmin,xmax,ctid, * from t2; A1002가 제일 아래로 내려감 A1001 위치도 아래로 변경
17.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum • Full Vacuum Full Vacuum을 하면 삭제되지 않았던 line pointer의 공간도 삭제된다. Special Page Header 'A1002','A','A''A1001',‘B','A' Tuple Header 2000 801f line pointer line pointer 삭제
18.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum • select xmin,xmax,ctid, * from t2; ④ Full vacuum line pointer 삭제
19.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum 표준 vacuum Full vacuum 처리 방식 • 다른 자료가 저장될 수 있도록 빈 공간으로 표시 • OS 입장에서는 디스크의 여유 공간 확보가 불가 • 새 파일에 저장하는 방식 (pg_class의 relfilenode값이 변경) • OS 입장에서 디스크의 여유 공간 확보가 가능 • 최적의 물리적 크기로 테이블 생성 처리 속도 Full vacuum보다는 시간이 적게 걸림 처리 속도가 매우 느려 시간이 오래 걸림 Lock 여부 여러 다른 작업들과 함께 사용 가능 select, update, insert, delete (단, ALTER TABLE는 안됨) 해당 테이블에 배타적 잠금을 지정하기 때문에 어떤 작업도 함께 사용할 수 없음
20.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅰ. Vacuum 시의 공간관리3. 표준 vacuum VS Full vacuum 표준 Vacuum 표준 Vacuum, Full Vacuum 후, 각각의 결과 Full Vacuum Vacuum 전
21.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석
22.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석1. Visibility Map Visibility Map (≒ bitmap index) • 각각의 heap relation은 VM을 통해 어떤 페이지가 모두 active 상태의 트랜잭션으로 보이는 튜플만 포함하는 지를 추적 • 메인 릴레이션 데이터를 따라서 저장이 되는데, filenode 번호 뒤에 ' _vm' 이라는 접미사가 붙는 형태로 생성 • 예를 들면, 릴레이션의 filenode가 ‘123’이면, vm은 ‘123_vm’ 형태로 생성 • 한 heap page당 1bit씩 저장 • bit는 vacuum 작업에 의해 설정이 되며, 페이지의 데이터 변경 작업에 의해서 clear될 수 있음
23.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • 블록 1은 dead tuple 없는 ‘1’을 나타내므로 vacuum 작업이 필요 없다. • 블록 2는 삭제된 튜플이 있기 때문에 ‘0’이 표시된다. • 업데이트시에 새로 추가된 튜플은 dead tuple이 없지만 0으로 표시된다. • Index-Only Scan시에 블록1의 튜플은 모두 존재한다고 알고있다. 출처: http://www.postgresqlinternals.org/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:4_9.jpg 레코드1 레코드3 레코드4 레코드2 레코드5 (레코드6) 레코드7 레코드8 레코드6A 레코드9 블록1 블록2 테이블A의 데이터 블록 테이블A의 Visibility Map (bitmap) 1 0 dead tuple이 없음 블록1 블록2 dead tuple 있을 수도 있고, 없을 수도 있음 1. Visibility Map
24.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. Visibility map은 heap page당 한 비트씩 저장한다. 2. Visibility map 비트들은 오직 vacuum에 의해서 정해진다. 하지만 다른 페이지 내의 데이터 변경 작업 (update, delete)에 의해서 clear 된다. * Byte 단위로 한 bit씩 Little-endian 순서로 저장 ( 하위 비트부터 저장 ) VM Layout VM Header 1. Visibility Map
25.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석1. Visibility Map 1111 1110 1111 1111 1111 1111 0145 2367 A1080 ... A1084 A1085 ... A1089 A1100 ... A1104 A1105 ... A1109 A1110 ... A1114 A1040 ... A1044 A1045 ... A1049 A1050 ... A1054 A1060 ... A1064 A1065 ... A1069 A1070 ... A1074 A1075 ... A1079 A1000 ... A1004 A1005 ... A1009 A1020 ... A1024 A1025 ... A1029 1 2 3 4 5 6 70 16진수를 2진수로 변환
26.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. t2 테이블에 120건 insert ( 24페이지 생성, 1 페이지당 5건 ) 2. vacuum 실행 3. vm 페이지 Dump 전부 visible 이므로 “1111 1111 1111 1111 1111 1111” ( ff ff ff - hexa ) insert into t2 SELECT 'A' || generate_series(1000,1000+120-1),'A','A'; vacuum t2 ; 1. Visibility Map
27.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. 0번 페이지에서 1번째 레코드 삭제 * ctid ( 0,1 ) : 0번 페이지에서 1번째 레코드 2. vm 페이지 Dump 0번 페이지에 dead tuple이 발생해서 1번 Byte의 8번 Bit가 clear “1111 1110 1111 1111 1111 1111”( fe ff ff – hexa ) delete from t2 where c1 = 'A1000' ; 1. Visibility Map
28.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. 5번 페이지에서 1번째 레코드 삭제 2. vm 페이지 Dump 5번 페이지에 dead tuple이 발생해서 1번 Byte의 3번 Bit가 clear “1101 1110 1111 1111 1111 1111”( de ff ff – hexa ) 1. Visibility Map delete from t2 where c1 = 'A1025' ;
29.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. 10번 페이지에서 1번째 레코드 삭제 2. vm 페이지 Dump 10번 페이지에 dead tuple이 발생해서 2번 Byte의 6번 Bit가 clear “1101 1110 1111 1011 1111 1111”( de fb ff – hexa ) 1. Visibility Map delete from t2 where c1 = 'A1050' ;
30.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. 15번 페이지에서 1번째 레코드 삭제 2. vm 페이지 Dump 15번 페이지에 dead tuple 이 발생해서 2번 Byte의 1번 Bit가 clear “1101 1110 0111 1011 1111 1111”( de 7b ff – hexa ) 1. Visibility Map delete from t2 where c1 = 'A1075' ;
31.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. 16번 페이지에서 1번째 레코드, 17번 페이지에서 1번째 레코드를 삭제 2. vm 페이지 Dump 16,17번 페이지에 dead tuple이 발생해서 3번 Byte의 7,8번 Bit가 clear “1101 1110 0111 1011 1111 1100”( de 7b fc – hexa ) delete from t2 where c1 in ( 'A1080','A1085' ) ; 1. Visibility Map
32.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 1. 20번 페이지에서 1번째 레코드, 21번 페이지에서 1번째 레코드, 22번 페이지에서 1번째 레코드 삭제 2. vm 페이지 Dump 20,21,22번 페이지에 dead tuple이 발생해서 3번 Byte의 2,3,4번 Bit가 clear “1101 1110 0111 1011 1000 1100”( de 7b 8c – hexa ) delete from t2 where c1 in ( 'A1100','A1105','A1110' ) ; 1. Visibility Map
33.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 Free Space Map (≒ Freelist) • 각 heap과 index relation은 fsm을 통해 릴레이션의 사용 가능한 공간을 추적 • 메인 릴레이션 데이터를 따라서 저장이 되는데, filenode 번호 뒤에 ' _fsm' 이라는 접미사가 붙는 형태로 생성 ex) 릴레이션의 filenode가 ‘123’이면, fsm은 ‘123_fsm’ 형태로 생성 • 각 fsm 페이지는 이진 트리로 구성되어 있으며 각 노드당 1byte • 각 리프 노드는 heap page를 나타내거나 하위 레벨의 fsm 페이지를 나타냄 • 하위 레벨의 fsm 페이지에 각 heap 페이지의 사용 가능한 공간이 저장 • 상위 레벨은 하위 레벨로부터 모은 정보이기 때문에 루트는 최대값이 저장 2. Free Space Map
34.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • 28 (Header) + 8191(13 레벨의 총합) = 8219 bytes • 8219 - 8192(8k) = 27 bytes 초과 • 마지막 레벨인 4096 bytes 중 27 bytes 모자람 = 4069 bytes 즉, 테이블당 관리할 수 있는 페이지의 수 4069개 • 만약 FSM이 초과된다면 페이지가 하나 더 생김 2. Free Space Map Header (28 byte) 2 4 8 16 4069 …(8k = 8192 bytes) 13 레벨 … Header (28 byte) 2 4 8 16 4069 … … 1 1 (8k = 8192 bytes)
35.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • 블록마다 1byte를 사용해서 공간을 BLCKSZ/ 256으로 나눈 값 유지 (1byte = 8bit = 28 =256) • FSM value = Free space / (BLCKSZ/ 256) ex) 1024 / (8192/256) = 32 FSM Header FSM Layout 2. Free Space Map . . .. . 56 56 00 56 00 56 13 56 56 13 leafnode 1번 페이지 Free space 2번 페이지 Free space
36.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • 1 페이지에 7건의 레코드가 적재된다. • 21건의 레코드를 insert하면 3 페이지가 생성되고, FSM에는 2개만 보인다. 2. Free Space Map • CREATE TABLE • INSERT 0 21 . . .. . 13 13 00 13 00 13 13 13 FSM 2개
37.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • Vacuum 작업이 처리되면 FSM에 반영이 된다. VACUUM 2. Free Space Map . . .. . 13 13 00 13 00 13 13 13 FSM 3개 13 13 00
38.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • 2건을 delete 하면, FSM에 반영이 안 된다. 2. Free Space Map DELETE 2 . . .. . 13 13 00 13 00 13 13 13 13 13 00 FSM 3개
39.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • Vacuum 작업이 처리되면 FSM에 반영이 된다. 2. Free Space Map VACUUM . . .. . 56 56 00 56 00 56 13 56 56 13 13 00
40.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • 19건을 Update 하면 페이지가 6개로 늘어나는데, FSM에는 반영이 되지 않는다. (5개) 2. Free Space Map UPDATE 19 . . .. . 13 13 00 13 00 13 13 13 13 13 13 13 00 13 13 13 00 FSM 5개
41.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. Ⅱ. VM과 FSM 구조 분석 • Vacuum 작업이 처리되면 FSM에 반영이 된다. (6개 확인) 2. Free Space Map VACUUM . . .. . fe fe 00 fe 00 bb fe fe fe fe 9a 9a 00 fe 13 13 9a FSM 6개
42.
© Copyrights 2001~2016,
EXEM CO.,LTD. All Rights Reserved. PG_DAY 2016Reference 1.https://en.wikipedia.org/wiki/PostgreSQL 2.http://postgresql.kr/docs/9.3/routine-vacuuming.html 3.http://www.postgresqlinternals.org/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:4_9.jpg
43.
cafe.naver.com/playexem Q & A ©
Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
44.
NAVER http://cafe.naver.com/playexem ITPUB (中)
http://blog.itpub.net/31135309/ Wordpress https://playexem.wordpress.com/ Slideshare http://www.slideshare.net/playexem Youtube https://www.youtube.com/channel/UC5wK R_-A0eL_Pn_EMzoauJg Tudou (中) http://www.tudou.com/home/maxgauge/ 교육 문의: 연구컨텐츠팀 김숙진 edu@ex-em.com • Research & Contents Team © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
45.
cafe.naver.com/playexem Thank You © Copyrights
2001~2016, EXEM CO.,LTD. All Rights Reserved.
Download