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
Submit search
EN
Uploaded by
Masahiko Sawada
7,309 views
Vacuum徹底解説
PostgreSQL Conference Japan 2021の講演資料です。 https://www.postgresql.jp/jpug-pgcon2021#T3
Technology
◦
Related topics:
Garbage Collection
•
Read more
5
Save
Share
Embed
Embed presentation
Download
Downloaded 112 times
1
/ 51
2
/ 51
3
/ 51
4
/ 51
5
/ 51
6
/ 51
7
/ 51
8
/ 51
9
/ 51
10
/ 51
11
/ 51
12
/ 51
13
/ 51
14
/ 51
15
/ 51
16
/ 51
17
/ 51
18
/ 51
19
/ 51
20
/ 51
21
/ 51
Most read
22
/ 51
23
/ 51
24
/ 51
25
/ 51
26
/ 51
27
/ 51
28
/ 51
29
/ 51
30
/ 51
31
/ 51
32
/ 51
33
/ 51
34
/ 51
35
/ 51
36
/ 51
37
/ 51
38
/ 51
Most read
39
/ 51
40
/ 51
Most read
41
/ 51
42
/ 51
43
/ 51
44
/ 51
45
/ 51
46
/ 51
47
/ 51
48
/ 51
49
/ 51
50
/ 51
51
/ 51
More Related Content
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
by
NTT DATA Technology & Innovation
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
by
Ohyama Masanori
PDF
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
by
NTT DATA Technology & Innovation
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
PDF
PostgreSQLアンチパターン
by
Soudai Sone
PPTX
Sql server のバックアップとリストアの基礎
by
Masayuki Ozawa
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
by
NTT DATA Technology & Innovation
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
by
Ohyama Masanori
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
by
NTT DATA Technology & Innovation
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
PostgreSQLアンチパターン
by
Soudai Sone
Sql server のバックアップとリストアの基礎
by
Masayuki Ozawa
What's hot
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
by
Hironobu Suzuki
PDF
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PPTX
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
by
NTT DATA Technology & Innovation
PDF
PostgreSQL 15の新機能を徹底解説
by
Masahiko Sawada
PDF
Inside vacuum - 第一回PostgreSQLプレ勉強会
by
Masahiko Sawada
PDF
PostgreSQL: XID周回問題に潜む別の問題
by
NTT DATA OSS Professional Services
PDF
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
まずやっとくPostgreSQLチューニング
by
Kosuke Kida
PDF
PostgreSQLの運用・監視にまつわるエトセトラ
by
NTT DATA OSS Professional Services
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
PDF
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
by
NTT DATA Technology & Innovation
PDF
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
by
NTT DATA Technology & Innovation
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
by
NTT DATA Technology & Innovation
PPTX
SQLチューニング入門 入門編
by
Miki Shimogai
PDF
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
使ってみませんか?pg_hint_plan
by
NTT DATA OSS Professional Services
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
by
Hironobu Suzuki
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
by
NTT DATA Technology & Innovation
PostgreSQL 15の新機能を徹底解説
by
Masahiko Sawada
Inside vacuum - 第一回PostgreSQLプレ勉強会
by
Masahiko Sawada
PostgreSQL: XID周回問題に潜む別の問題
by
NTT DATA OSS Professional Services
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
まずやっとくPostgreSQLチューニング
by
Kosuke Kida
PostgreSQLの運用・監視にまつわるエトセトラ
by
NTT DATA OSS Professional Services
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
by
NTT DATA Technology & Innovation
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
by
NTT DATA Technology & Innovation
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
by
NTT DATA Technology & Innovation
SQLチューニング入門 入門編
by
Miki Shimogai
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
使ってみませんか?pg_hint_plan
by
NTT DATA OSS Professional Services
Similar to Vacuum徹底解説
PPTX
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
PostgreSQLによるデータ分析ことはじめ
by
Ohyama Masanori
PDF
C16 45分でわかるPostgreSQLの仕組み by 山田努
by
Insight Technology, Inc.
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
by
NTT DATA OSS Professional Services
PDF
いまさら聞けないPostgreSQL運用管理
by
Uptime Technologies LLC (JP)
PDF
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
by
Uptime Technologies LLC (JP)
PDF
PostgreSQLアーキテクチャ入門
by
Uptime Technologies LLC (JP)
PDF
明日から使えるPostgre sql運用管理テクニック(監視編)
by
kasaharatt
PDF
PostgreSQL運用管理入門
by
Yoshiyuki Asaba
PDF
PostgreSQL 9.6 新機能紹介
by
Masahiko Sawada
PDF
AWS Redshift Analyzeの必要性とvacuumの落とし穴
by
Moto Fukao
PDF
Vacuumとzheap
by
Masahiko Sawada
PDF
Kof2016 postgresql-9.6
by
Toshi Harada
ODP
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
by
Shigeru Hanada
PDF
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
by
Insight Technology, Inc.
PDF
Parallel Vacuum
by
Masahiko Sawada
PDF
Chugoku db 17th-postgresql-9.6
by
Toshi Harada
PDF
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
by
Shigeru Hanada
PDF
OSC沖縄2014_JPUG資料
by
kasaharatt
PDF
Oss x user_meeting_6_postgres
by
Kosuke Kida
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
by
NTT DATA Technology & Innovation
PostgreSQLによるデータ分析ことはじめ
by
Ohyama Masanori
C16 45分でわかるPostgreSQLの仕組み by 山田努
by
Insight Technology, Inc.
NTT DATA と PostgreSQL が挑んだ総力戦
by
NTT DATA OSS Professional Services
いまさら聞けないPostgreSQL運用管理
by
Uptime Technologies LLC (JP)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
by
Uptime Technologies LLC (JP)
PostgreSQLアーキテクチャ入門
by
Uptime Technologies LLC (JP)
明日から使えるPostgre sql運用管理テクニック(監視編)
by
kasaharatt
PostgreSQL運用管理入門
by
Yoshiyuki Asaba
PostgreSQL 9.6 新機能紹介
by
Masahiko Sawada
AWS Redshift Analyzeの必要性とvacuumの落とし穴
by
Moto Fukao
Vacuumとzheap
by
Masahiko Sawada
Kof2016 postgresql-9.6
by
Toshi Harada
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
by
Shigeru Hanada
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
by
Insight Technology, Inc.
Parallel Vacuum
by
Masahiko Sawada
Chugoku db 17th-postgresql-9.6
by
Toshi Harada
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
by
Shigeru Hanada
OSC沖縄2014_JPUG資料
by
kasaharatt
Oss x user_meeting_6_postgres
by
Kosuke Kida
More from Masahiko Sawada
PDF
PostgreSQL 15 開発最新情報
by
Masahiko Sawada
PDF
今秋リリース予定のPostgreSQL11を徹底解説
by
Masahiko Sawada
PDF
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
by
Masahiko Sawada
PDF
PostgreSQLでスケールアウト
by
Masahiko Sawada
PDF
PostgreSQL10徹底解説
by
Masahiko Sawada
PDF
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
by
Masahiko Sawada
PPTX
PostgreSQL共有バッファと関連ツール
by
Masahiko Sawada
PDF
pg_bigmを触り始めた人に伝えたいこと
by
Masahiko Sawada
PDF
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
by
Masahiko Sawada
PDF
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
by
Masahiko Sawada
PDF
Introduction VAUUM, Freezing, XID wraparound
by
Masahiko Sawada
PDF
Transparent Data Encryption in PostgreSQL
by
Masahiko Sawada
PDF
FDW-based Sharding Update and Future
by
Masahiko Sawada
PDF
pg_bigmと類似度検索
by
Masahiko Sawada
PDF
Bloat and Fragmentation in PostgreSQL
by
Masahiko Sawada
PDF
PostgreSQL 12の話
by
Masahiko Sawada
PDF
Vacuum more efficient than ever
by
Masahiko Sawada
PDF
What’s new in 9.6, by PostgreSQL contributor
by
Masahiko Sawada
PDF
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
by
Masahiko Sawada
PDF
XID周回問題に潜む別の問題
by
Masahiko Sawada
PostgreSQL 15 開発最新情報
by
Masahiko Sawada
今秋リリース予定のPostgreSQL11を徹底解説
by
Masahiko Sawada
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
by
Masahiko Sawada
PostgreSQLでスケールアウト
by
Masahiko Sawada
PostgreSQL10徹底解説
by
Masahiko Sawada
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
by
Masahiko Sawada
PostgreSQL共有バッファと関連ツール
by
Masahiko Sawada
pg_bigmを触り始めた人に伝えたいこと
by
Masahiko Sawada
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
by
Masahiko Sawada
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
by
Masahiko Sawada
Introduction VAUUM, Freezing, XID wraparound
by
Masahiko Sawada
Transparent Data Encryption in PostgreSQL
by
Masahiko Sawada
FDW-based Sharding Update and Future
by
Masahiko Sawada
pg_bigmと類似度検索
by
Masahiko Sawada
Bloat and Fragmentation in PostgreSQL
by
Masahiko Sawada
PostgreSQL 12の話
by
Masahiko Sawada
Vacuum more efficient than ever
by
Masahiko Sawada
What’s new in 9.6, by PostgreSQL contributor
by
Masahiko Sawada
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
by
Masahiko Sawada
XID周回問題に潜む別の問題
by
Masahiko Sawada
Recently uploaded
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
PDF
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
PDF
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
PDF
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PPTX
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
PDF
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
PDF
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
PPTX
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
PDF
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
Vacuum徹底解説
1.
【T2】Vacuum徹底解説 Masahiko Sawada PostgreSQL Conference
Japan 2021
2.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 2 Vacuumは最も重要な機能の一つ • PostgreSQL = Vacuumみたいなところもある • 仕組みや特性を理解する • トラブル時も慌てなくなるし、応用も効く
3.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 3 目次 • PostgreSQLのアーキテクチャを簡単に紹介 • なぜVacuumが必要?どうやって動くの? • ゴミ掃除 • XID周回の防止(FREEZE) • おすすめの設定パラメータ • モニタリング • トラブルシューティング&TIPS
4.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 4 用語説明 • ページ/ブロック • テーブル、インデックスを構成するデータ。PostgreSQLのI/Oする単位。デフォルトでは1ページは 8kB。 • トランザクションID(XID) • 各トランザクションに付与される単調増加する非負整数 • Visibility Map • 各テーブルに付いているマップ。「ゴミを持つブロック」が簡単にわかる(詳細はあとで説明します)
5.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 5 2分でわかるPostgreSQLのアーキテクチャ 10 Alice 10 Alice テーブル タプル(行) インデックス インデックス
6.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 6 2分でわかるPostgreSQLのアーキテクチャ Alice→BobにUPDATE 10 Alice 10 Alice テーブル タプル(行) インデックス 10 Bob インデックス 10 Bob
7.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 7 2分でわかるPostgreSQLのアーキテクチャ VacuumでAliceのタプルを回収 テーブル タプル(行) インデックス 10 Bob インデックス 10 Bob
8.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 8 2分でわかるPostgreSQLのアーキテクチャ 新たにCarolのタプルをINSERT 3 Carol 3 Carol テーブル タプル(行) インデックス 10 Bob インデックス 10 Bob
9.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 9 なぜVacuumが必要? Vacuumが担当している役割は基本的には2つ 1. ゴミの回収 • テーブル、インデックスの肥大化を防ぐ • Visibility Mapの更新(Vacuumの効率化+Index Only Scanの効率化) 2. XID周回の防止 • 詳しいことは後半で • Vacuum中は両方(ゴミ回収&XID周回の防止)行う • 起動する(=必要な)タイミングが2つある
10.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 10 VACUUMとVACUUM FULL • 基本的にはVACUUMのみでOK • 本セッションでもVACUUMに焦点を当てて説明します ゴミを回収する XID周回の防止 テーブルを小さくする 処理中にテーブルにアクセス可能 VACUUM ○ ○ △ ○ VACUUM FULL ○ ○ ○ ✕
11.
ゴミ掃除
12.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 12 PostgreSQLのUPDATE/DELETEはゴミを残す • UPDATEやDELETEで削除マークを付けたタプルの領域はVacuumしないと再利用できない • 削除”マーク”なのはまだ他のトランザクションが見る可能性があるため • ゴミはテーブルにもインデックスにも溜まるのでどちらにもVacuumが必要
13.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 13 HOT更新が使えるのがベスト 10 Alice 10
14.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 14 HOT更新が使えるのがベスト Alice→Bobに通常の更新 10 Alice 10 10 Bob 10 テーブルにもインデックスにも 新しいタプルを挿入する
15.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 15 HOT更新が使えるのがベスト 10 Alice 10
16.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 16 HOT更新が使えるのがベスト Alice→BobにHOT更新 10 Alice 10 10 Bob インデックスには触らず、 テーブル内でOld→Newにリンクを作る
17.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 17 HOT更新が使えるのがベスト さらにBob→CarolにHOT更新 10 Alice 10 10 Bob インデックスには触らず、 テーブル内でOld→Newにリンクを作る 10 Carol
18.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 18 HOT更新が使えるのがベスト ページ単位でVacuumが走り、リンク内のいらないタプルを回収できる 10 • インデックスにはゴミは溜まらない • テーブル内のタプルもVACUUMなしで (SELECT時等)回収可能 10 Carol
19.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 19 HOT更新を使うには条件がある • インデックスを貼っている列を更新しないこと • 対策:不要なインデックスは削除する • ページ内に新しいタプルが入る分の空き領域があること • ページを跨いだリンクは作れない • 対策:FILLFACTORを利用する
20.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 20 HOT更新が使えるのがベスト・・・だけど • HOT更新が使えれば肥大化を防げる • ただ使える条件が色々ある(インデックスが貼ってある列を更新しないなど) • 現実的には全ての更新をHOT更新にするのは難しい • Vacuumも併用してゴミを回収する
21.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 21 自動Vacuum • テーブル内のゴミタプル数やその割合を元に(+XID周回防止のタイミングで)自動的に起動する • 時間帯などで制御することはできない • 最大でautovacuum_max_workersが同時にVacuumする(Analyzeもする) • 遅延がかかっている • FULLじゃない。パラレルじゃない。 • 特別な要件がなければ自動Vacuumに任せるのがおすすめ
22.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 22 自動Vacuumのパラメータ ゴミタプルの数や割合で自動Vacuumを起動する • autovacuum_vacuum_threshold/scale_factor (50/0.2) • (threshold + (全タプル数 * scale_factor))以上のゴミタプルがあるときに自動Vacuumを 起動する • autovaucum_vacuum_insert_threshold (0.2) • ゴミタプル数ではなく、INSERTタプル数を元に自動Vacuumを起動する • パラメータはテーブルごとにも設定可能
23.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 23 ロングトランザクション ゴミ回収の一番の敵 • 全てのトランザクションが見ないことが分かっているデータのみをゴミとして扱える • 1つでも見る可能性のあるトランザクションがあればそれはゴミではない • あるトランザクションが長時間実行中だと、そのトランザクションが開始以降に削除されたタプルは回収できない • ”ロングトランザクション”とみなされるもの • 長時間実行中のクエリ • 次のクエリを待っているトランザクション (idle in transaction) • 準備済み(PREPARE済み)の2相コミット • レプリケーション(物理・論理)のスタンバイサーバで開始されたロングトランザクション
24.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 24 ここまでのまとめ • HOT更新のために不要なインデックスは削除する • 特別な要件がなければ自動Vacuumに任せる • ゴミタプルが回収されない?と思ったら”ロングトランザクション”の存在を確認する
25.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 25 (すこし脱線)UNDOログとの違い PostgreSQL Database X UNDO • ゴミはページ内に放置 • Vacuumは各部屋を回っ てゴミを回収(ゴミがあ る部屋が事前にわかる= Visibility Map) • ゴミじゃなかった (ROLLBACK)場合もそ のままでOK • ゴミはゴミ捨て場 (UNDOログ)へ自分で 持っていく • ゴミ捨て場にあるゴミを 捨てるだけ • ゴミじゃなかった (ROLLBACK)場合は部 屋に戻す必要がある
26.
Vacuumの動き
27.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 27 Vacuumの動き FULLじゃない方のVacuum • テーブルの先頭からゴミタプルを探す • 見つけたゴミタプルのタプルID(TID)をメモリに保存 (Scanning heap) • maintenance_work_mem、autovacuum_work_mem • テーブルを見終わったら、インデックスを1つずつVacuumしてい く (Vacuuming indexes) • テーブルをVacuum (Vacuuming heap) • テーブルの末尾を切り詰める (Truncating heap) Scanning heap Vacuuming indexes Vacuuming heap Cleaning up indexes Truncating heap
28.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 28 最適化やオプション • Visibility Map • 各テーブルが持っているマップ • ゴミを持つページが分かる • パラレルVacuum (PostgreSQL 13 ~ ) • 複数のインデックスを並列でVacuumする • VACUUMコマンドのオプション • INDEX_CLEANUP, TRUNCATEなど • インデックスVacuumやTruncateフェーズをスキップできる Scanning heap Vacuuming indexes Vacuuming heap Cleaning up indexes Truncating heap
29.
モニタリング
30.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 30 log_autovacuum_min_duration 長時間実行した自動Vacuumの活動をログに出す(デフォルト無効) LOG: automatic vacuum of table "postgres.public.tbl": index scans: 1 pages: 0 removed, 8850 remain, 0 skipped due to pins, 0 skipped frozen tuples: 1000000 removed, 1000000 remain, 0 are dead but not yet removable, oldest xmin: 737 index scan needed: 4425 pages from table (50.00% of total) had 1000000 dead item identifiers removed index "tbl_pkey": pages: 5486 in total, 0 newly deleted, 0 currently deleted, 0 reusable index "tbl_b_idx": pages: 5486 in total, 0 newly deleted, 0 currently deleted, 0 reusable avg read rate: 7.576 MB/s, avg write rate: 13.567 MB/s buffer usage: 27981 hits, 5184 misses, 9283 dirtied WAL usage: 28638 records, 6 full page images, 15077678 bytes system usage: CPU: user: 2.81 s, system: 0.15 s, elapsed: 5.34 s
31.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 31 log_autovacuum_min_duration 長時間実行した自動Vacuumの活動をログに出す(デフォルト無効) LOG: automatic vacuum of table "postgres.public.tbl": index scans: 1 pages: 0 removed, 8850 remain, 0 skipped due to pins, 0 skipped frozen tuples: 1000000 removed, 1000000 remain, 0 are dead but not yet removable, oldest xmin: 737 index scan needed: 4425 pages from table (50.00% of total) had 1000000 dead item identifiers removed index "tbl_pkey": pages: 5486 in total, 0 newly deleted, 0 currently deleted, 0 reusable index "tbl_b_idx": pages: 5486 in total, 0 newly deleted, 0 currently deleted, 0 reusable avg read rate: 7.576 MB/s, avg write rate: 13.567 MB/s buffer usage: 27981 hits, 5184 misses, 9283 dirtied WAL usage: 28638 records, 6 full page images, 15077678 bytes system usage: CPU: user: 2.81 s, system: 0.15 s, elapsed: 5.34 s 理想は常に「1」
32.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 32 log_autovacuum_min_duration 長時間実行した自動Vacuumの活動をログに出す(デフォルト無効) LOG: automatic vacuum of table "postgres.public.tbl": index scans: 1 pages: 0 removed, 8850 remain, 0 skipped due to pins, 0 skipped frozen tuples: 1000000 removed, 1000000 remain, 0 are dead but not yet removable, oldest xmin: 737 index scan needed: 4425 pages from table (50.00% of total) had 1000000 dead item identifiers removed index "tbl_pkey": pages: 5486 in total, 0 newly deleted, 0 currently deleted, 0 reusable index "tbl_b_idx": pages: 5486 in total, 0 newly deleted, 0 currently deleted, 0 reusable avg read rate: 7.576 MB/s, avg write rate: 13.567 MB/s buffer usage: 27981 hits, 5184 misses, 9283 dirtied WAL usage: 28638 records, 6 full page images, 15077678 bytes system usage: CPU: user: 2.81 s, system: 0.15 s, elapsed: 5.34 s ロングトランザクション等で 「ゴミになりきれないタプル」は ここにカウントされる。 少ない方が良い。
33.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 33 pg_stat_progress_vacuumビュー Vacuumが今何をしているかが確認できるビュー =# SELECT * FROM pg_stat_progress_vacuum; -[ RECORD 1 ]———+-------------- pid | 9130 datid | 13238 datname | postgres relid | 16384 phase | scanning heap heap_blks_total | 8850 heap_blks_scanned | 6530 heap_blks_vacuumed | 0 index_vacuum_count | 0 max_dead_tuples | 2575350 num_dead_tuples | 475731 Scanning heap Vacuuming indexes Vacuuming heap Cleaning up indexes Truncating heap // 現在のフェーズ // テーブルの総ブロック数 // 何ブロックまでスキャンしたか // 何ブロックまでVacuumしたか // Index Vacuumの回数 // 格納できる最大のゴミタプルの数 // 現在のゴミタプルの数
34.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 34 pg_stat_all_tables テーブル毎の稼働統計情報が入っている • n_tup_upd, n_tup_hot_upd : 通常の更新とHOT更新の数 • n_dead_tup : ゴミタプルの数 • last_autovacuum, last_vacuum : 最後に(自動)Vacuumした時刻 • vacuum_count : Vacuumした回数
35.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 35 ここまでのまとめ • ログはできるだけ出しておいた方が良い • ちゃんとゴミタプルが回収されているか? • インデックスVacuumが複数回走っていないか? • 十分な頻度でVacuumが実行されているか? • HOT更新はどれくらい使われているか?
36.
XID周回の防止 ~ Freeze
~
37.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 37 XID周回問題 • XIDは32-bit 非負整数値(最大2^32 - 1 = 4,294,967,295) • XIDはタプルの可視性判断に使っている • 例)XID=100はXID=90がINSERTしたタプルは見える • XIDが周回するとタプルの可視性判断が壊れる • 例)XID=100はXID=(周回した後の)90のタプルは見えてはいけない • タプル(のXIDに)Freezeマークを付けることで「XIDの値に関係なく過去」とする(=Freeze処理) • Freezeは定期的(約21億トランザクション毎)にテーブル単位で必要
38.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 38 Freeze 一定量のトランザクションを消費する度にテーブル毎に定期的に必要な処理 • ゴミ回収とは別のタイミングで自動Vacuumが起動される • 「積極的なバキューム」「aggressive vacuum」 • 通常のVacuumよりも重い • autovacuum_freeze_xxxパラメータ等で起動タイミングを制御する • もしFreezeがずっとされなかったら? • 新しいXIDの払い出しが停止=データベース全体がRead-onlyになる • DBデータが壊れる、ということはない
39.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 39 PostgreSQLの基本的なFreeze戦略 1.5億 2億 21億 16億 0 • テーブル毎の年齢(テーブルが作られてか ら/FreezeされてからどれくらいXIDが消費 されたか)を管理 • テーブルが作られた直後は0歳 • トランザクションが生成されるたびに歳を 取る(約21億歳が上限) • どれくらい古くなったかによって、Freeze するために自動的にVacuumが起動される • Freezeされれば若返る Tbl1 Tbl2 Tbl3 Tbl4 次Vacuumすると きには積極的に Freezeするよ Freezeするため にVacuumを起動 するよ Failsafeモードに 入るよ
40.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 40 PostgreSQLの基本的なFreeze戦略 1.5億 2億 21億 16億 0 • テーブル毎の年齢(テーブルが作られてか ら/FreezeされてからどれくらいXIDが消費 されたか)を管理 • テーブルが作られた直後は0歳 • トランザクションが生成されるたびに歳を 取る(約21億歳が上限) • どれくらい古くなったかによって、Freeze するために自動的にVacuumが起動される • Freezeされれば若返る Tbl1 Tbl2 Tbl3 Tbl4 次Vacuumすると きには積極的に Freezeするよ Freezeするため にVacuumを起動 するよ Failsafeモードに 入るよ vacuum_freeze_table_age autovacuum_freeze_max_age vacuum_failsafe_age
41.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 41 Failsafeモード PostgreSQL 14からの新機能 • 最悪な状況(Read-only化)を防ぐ機能 • 16億トランザクション消費する間に全てのテーブルの Freeze処理が完了しなかった場合、Failsafeモードと呼ば れるモードに入る • Freezeすることを最優先する • インデックスVacuumやTruncateのスキップ、遅延しない、 など Scanning heap Vacuuming indexes Vacuuming heap Cleaning up indexes Truncating heap
42.
トラブルシューティング& TIPS
43.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 43 Vacuumしてもゴミが回収されない • ロングトランザクションを確認する • 長時間実行中のクエリ(pg_stat_activityのquery_start等) • 途中で止まっているトランザクション(pg_stat_activityのstate等) • 未完了の2相コミット(pg_prepared_xacts) • レプリケーションのスタンバイサーバ(pg_stat_replication) • 原因を取り除いて再度Vacuumを実行 • それでもテーブルサイズが大きくなり続ける場合は自動Vacuumが間に合ってないので、より頻度を高くするか遅延を弱くする • テーブル・パーティショニングを検討しても良いかも
44.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 44 Vacuumが終わらない • pg_stat_progress_vacuumでどこで止まっているか、なぜ遅いかを確認 • ディスクがボトルネック?遅延が効きすぎている? • テーブルが大きすぎる→テーブル・パーティショニングを検討する • インデックスVacuumに時間がかかっている→不要なインデックスを削除 • インデックスVacuumが何度も実行されている→maintenance_work_memが足りていない • パラメータを設定し直して再度Vacuumをやり直すのもあり(maintenance_work_memを増やしても実行中のVacuumには効 果がない) • 実行中のVacuumはpg_cancel_backend()でキャンセル可能(またはpg_terminate_backend())
45.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 45 “最速”でVacuumするには • 遅延を無効にする(手動Vacuumではデフォルトで無効) • maintenance_work_memを1GBに設定 • VACUUMコマンドのオプションで処理を制御 • PARALLEL N、もしくはINDEX_CLEANUP OFF • Nはインデックス数-1。max_parallel_maintenance_workersに注意 • TRUNCATE OFF
46.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 46 テーブルが肥大化しすぎた • VACUUM FULLやCLUSTERを使ってテーブルの物理サイズを小さくすることが可能 • ただし、排他ロックを取る&全インデックス再作成するので長時間なにもできなくなる • pg_repackを使うことも検討する • https://github.com/reorg/pg_repack • 同時アクセスを許しながらVACUUM FULL相当のことができる
47.
まとめ
48.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 48 おすすめパラメータ • log_autovacuum_min_duration:数分くらい。ログが出すぎないよう に • autovacuum_max_workers:最低でも(大きいテーブルの数+2,3)はほ しい • max_parallel_maintenance_workers:多めでもOK。 max_worker_processesを上げるのも忘れずに • maintenance_work_mem:デフォルトでもOK。最大で autovacuum_max_workers個が並列で走ることに注意。巨大なテーブ ルには大きい値を指定してもOK。 maintenance_work_mem 格納できるゴミタプル数 64MB(default) 約1100万行 256MB 約4400万行 512MB 約8900万行 1GB 約1億2000万行
49.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 49 今回触れていない話題 • ANALYZE、自動ANALYZE • 遅延Vacuumのパラメータ • マルチトランザクションID • 各処理の細かい最適化 • Vacuumの今後の改善
50.
© Copyright EnterpriseDB
Corporation, 2021. All rights reserved. 50 最後に • Vacuumにはゴミ掃除&XID周回の防止の2つの役割がある(起動するタイミングも2つ) • まずはHOT更新を意識して不要なインデックスは削除する • モニタリグしながら適宜調整していくべし • 殆どのパラメータはテーブル単位で設定が可能 • 状況が悪くなっていることを把握する&そうなったときの対処法を用意する • Vacuumの改善点も募集中です!
51.
Thank you E-mail: masahiko.sawada@enterprisedb.com Twitter:
@masahiko_sawada
Download