Submit Search
Upload
Vacuumとzheap
•
5 likes
•
1,792 views
Masahiko Sawada
Follow
BDI勉強会での発表資料です。 Vacuumの課題・改善案と、提案されているzheapについての解説です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 25
Download now
Download to read offline
Recommended
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
TiDBのトランザクション
TiDBのトランザクション
Akio Mitobe
Recommended
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
TiDBのトランザクション
TiDBのトランザクション
Akio Mitobe
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
NTT DATA OSS Professional Services
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
Masahiko Sawada
PostreSQL監査
PostreSQL監査
NTT DATA OSS Professional Services
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
Kohei KaiGai
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
Toshi Harada
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
Kohei KaiGai
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
NTT DATA OSS Professional Services
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
Kohei KaiGai
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
20191115-PGconf.Japan
20191115-PGconf.Japan
Kohei KaiGai
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
Masahiko Sawada
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
NTT DATA OSS Professional Services
ゲート方式量子コンピュータの概要
ゲート方式量子コンピュータの概要
Yahoo!デベロッパーネットワーク
NNKproject Japanese version
NNKproject Japanese version
nao takatoshi
More Related Content
What's hot
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
NTT DATA OSS Professional Services
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
Masahiko Sawada
PostreSQL監査
PostreSQL監査
NTT DATA OSS Professional Services
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
Kohei KaiGai
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
Toshi Harada
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
Kohei KaiGai
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
NTT DATA OSS Professional Services
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
Kohei KaiGai
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
20191115-PGconf.Japan
20191115-PGconf.Japan
Kohei KaiGai
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
Masahiko Sawada
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
NTT DATA OSS Professional Services
What's hot
(20)
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
PostreSQL監査
PostreSQL監査
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
20191115-PGconf.Japan
20191115-PGconf.Japan
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
Similar to Vacuumとzheap
ゲート方式量子コンピュータの概要
ゲート方式量子コンピュータの概要
Yahoo!デベロッパーネットワーク
NNKproject Japanese version
NNKproject Japanese version
nao takatoshi
NNKproject Japanese version2
NNKproject Japanese version2
nao takatoshi
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
Orb, Inc.
Orb oracle
Orb oracle
Masa Nakatsu
Zynga
Zynga
awsadvantageseminar
Aws privte20110406 arai
Aws privte20110406 arai
awsadovantageseminar
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
Kuniaki Igarashi
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009
Muhammad Ali
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
2018 07-23
2018 07-23
Yuji Oshima
OCaml でデータ分析
OCaml でデータ分析
Akinori Abe
並行実行制御の最適化手法
並行実行制御の最適化手法
Sho Nakazono
Runtime c++editing
Runtime c++editing
Seiya Ishibashi
第9回ACRiウェビナー_日立/島田様ご講演資料
第9回ACRiウェビナー_日立/島田様ご講演資料
直久 住川
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
2012 12 08_ngk_osm_a
2012 12 08_ngk_osm_a
Tom Hayakawa
ゆるかわPhp
ゆるかわPhp
Ryota Mochizuki
Similar to Vacuumとzheap
(20)
ゲート方式量子コンピュータの概要
ゲート方式量子コンピュータの概要
NNKproject Japanese version
NNKproject Japanese version
NNKproject Japanese version2
NNKproject Japanese version2
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
Orb oracle
Orb oracle
Zynga
Zynga
Aws privte20110406 arai
Aws privte20110406 arai
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009
トランザクションの設計と進化
トランザクションの設計と進化
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
2018 07-23
2018 07-23
OCaml でデータ分析
OCaml でデータ分析
並行実行制御の最適化手法
並行実行制御の最適化手法
Runtime c++editing
Runtime c++editing
第9回ACRiウェビナー_日立/島田様ご講演資料
第9回ACRiウェビナー_日立/島田様ご講演資料
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
2012 12 08_ngk_osm_a
2012 12 08_ngk_osm_a
ゆるかわPhp
ゆるかわPhp
More from Masahiko Sawada
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
Transparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQL
Masahiko Sawada
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
Masahiko Sawada
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Masahiko Sawada
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQL
Masahiko Sawada
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Masahiko Sawada
Vacuum more efficient than ever
Vacuum more efficient than ever
Masahiko Sawada
Parallel Vacuum
Parallel Vacuum
Masahiko Sawada
PostgreSQLでスケールアウト
PostgreSQLでスケールアウト
Masahiko Sawada
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
Masahiko Sawada
FDW-based Sharding Update and Future
FDW-based Sharding Update and Future
Masahiko Sawada
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
Masahiko Sawada
pg_bigmと類似度検索
pg_bigmと類似度検索
Masahiko Sawada
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
Masahiko Sawada
XID周回問題に潜む別の問題
XID周回問題に潜む別の問題
Masahiko Sawada
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
More from Masahiko Sawada
(20)
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Transparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQL
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQL
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Vacuum more efficient than ever
Vacuum more efficient than ever
Parallel Vacuum
Parallel Vacuum
PostgreSQLでスケールアウト
PostgreSQLでスケールアウト
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
FDW-based Sharding Update and Future
FDW-based Sharding Update and Future
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
pg_bigmと類似度検索
pg_bigmと類似度検索
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
XID周回問題に潜む別の問題
XID周回問題に潜む別の問題
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会
Recently uploaded
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Recently uploaded
(10)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Vacuumとzheap
1.
Copyright©2018 NTT Corp.
All Rights Reserved. Vacuumとzheap NTT OSSセンタ 澤田 雅彦 2018/3/30 BDI勉強会
2.
2Copyright©2018 NTT Corp.
All Rights Reserved. 自己紹介 澤田 雅彦 @sawada_masahiko NTT OSSセンタ NTTデータ入社(2012年) PostgreSQLの技術サポート PostgreSQLの本体開発 Replication, Vacuum, Distributed Transaction PostgreSQLの周辺ツール開発 pg_repack – オンラインメンテナンスツール pg_bigm – 2-gram全文検索モジュール
3.
3Copyright©2018 NTT Corp.
All Rights Reserved. • PostgreSQLおさらい • アーキテクチャ • MVCC • Vacuumの問題点と改善 • ストレージエンジンAPI • zheap 目次 PostgreSQLの現状の話 まだ導入されていない機能の話
4.
4Copyright©2018 NTT Corp.
All Rights Reserved. • プロセスモデル • Postmasterプロセス:接続の受付、Backendプロセスのforkなどを行う • Backendプロセス : SQLを処理するプロセス • DBデータは共有バッファを使ってプロセス間で共有する PostgreSQLのアーキテクチャ DBデータ (テーブル、インデックスなど) 共有バッファ WALバッファ WAL (トランザクションログ) backendbackendbackend (postgres) postmaster wal writer bg writer auto vacuum stat collector logger archiver wal receiver wal sender wal sender wal sender wal sender wal senderbg worker その他 制御情報 startup
5.
5Copyright©2018 NTT Corp.
All Rights Reserved. • トランザクションID(XID) • トランザクション毎に割り当てられるID。単調増加。32bit。 • xmin : 追加したトランザクションID(INSERT/UPDATE) • xmax : 削除したトランザクションID(DELETE/UPDATE) • cmin : 追加したコマンドのID • cmax : 削除したコマンドのID コマンドIDはカーソルを利用した時等に利用される 追記型アーキテクチャ xmin xmax cmin cmax Column 100 110 0 0 ‘A’ 100 1 ‘B’ 110 130 0 1 ‘A-1’ 120 0 ‘C’ 130 0 ‘D’ 130 1 ‘A-2’ xid(100) : INSERT ‘A’; xid(100) : INSERT ‘B’; xid(110) : UPDATE ‘A’ -> ‘A-1’; xid(120) : INSERT ‘C’; xid(130) : INSERT ‘D’; xid(130) : UPDATE ‘A-1’ -> ‘A-2’;
6.
6Copyright©2018 NTT Corp.
All Rights Reserved. • 各トランザクションのステータスを管理するファイル • 2bit/Txで表現 • 00 : in-progress • 01 : committed • 10 : aborted • 11 : sub-transaction committed • トランザクションIDから「どのclogファイルのどの部分 」を見るべきかがわかる • 可視性判定の度に毎回clogを見るのは遅い • clogの内容をタプルヘッダにキャッシュ(Hint Bitと呼ばれる) して二回目以降はclogを見ない clog(Commit Log)
7.
7Copyright©2018 NTT Corp.
All Rights Reserved. • 削除済みタプルを回収して、再利用可能にする機能( Garbage Collection) • 実行中トランザクションの最小のxminより、タプルのxmaxが小 さい場合、回収可能 • VacuumはINSERT/DELETE/UPDATEとは競合しない • 不要領域を再利用可能にするが、テーブルサイズは縮小 しない • ただし、テーブルの末尾が空になった時は切り詰められる • auto vacuum機能により、自動的にバックグラウンドで 実行される • 頻度はテーブル毎に設定可能、”ゆっくり”vacuumする事も可能 • 「ゴミタプルがある可能性のあるブロック」を管理する ことで効率的にVacuumする • Visibility Mapと呼ばれる Vacuum概要
8.
8Copyright©2018 NTT Corp.
All Rights Reserved. Block 0 (8kB) Block 1 : Block 100 : Block 198 Block 199 Vacuum概要(Visibility Mapの利用) 11 00 11 11 ..... 11 01 • Visibility Mapは2bit/blockで、1bit目で「ブロックにゴ ミタプルがある可能性があるかどうか」を表す • 「Xブロック目に対応するビットが1」=「Xブロック目 はVacuumしなくてよい」 • どのくらいゴミがあるかどうかはわからない 「block 0は飛ばし、block 1はVacuumする」みた いな感じで動作する。 けど、本当はOSのプリフェッチを活かすために 、32ブロック連続で1じゃないと飛ばさない
9.
9Copyright©2018 NTT Corp.
All Rights Reserved. • テーブルの先頭から末尾まで(※)を読んで、ゴミタプルを探す • (※)Visibility Mapを見て、ゴミがある所だけ読む • ゴミタプルが一定量溜まったらテーブル、インデックスのゴミを 回収する、を繰り返す Vacuum概要(処理の流れ) テーブル スキャン テーブル Vacuum インデックス Vacuum インデックスなしインデックスあり ※インデックスが2つある場合
10.
10Copyright©2018 NTT Corp.
All Rights Reserved. 1. テーブルを常に先頭から読もうとする 2. シングルプロセスでしかできない 3. インデックスを常に全て読む 4. DBの稼働状況を考慮しない Vacuumの問題
11.
11Copyright©2018 NTT Corp.
All Rights Reserved. • ゴミがある可能性があるブロックを管理するマップ( Visibility Map)である程度効率化できるが、どれくらい ゴミがあるかの情報はない • 「テーブル内のゴミはある程度局所化されているのでは ?」という前提の元、”最もI/Oコスパの良い範囲”に集 中してVacuumをする • 特定のIDへの更新の集中 • 特定の期間に関連するタプルへの更新の集中 テーブルを常に先頭から読もうとする
12.
12Copyright©2018 NTT Corp.
All Rights Reserved. • TPC-C(order_line) テーブルを常に先頭から読もうとする
13.
13Copyright©2018 NTT Corp.
All Rights Reserved. • TPC-C(order_line) テーブルを常に全て読もうとする
14.
14Copyright©2018 NTT Corp.
All Rights Reserved. Vacuumの並列化 W1 W2 W3 並列化
15.
15Copyright©2018 NTT Corp.
All Rights Reserved. 1. テーブルを常に先頭から読もうとする • “最もゴミタプルがありそうな場所”のみをVacuumする 2. シングルプロセスでしかできない • 並列化する 3. インデックスを常に全て読む • ゴミタプル数に応じて、インデックスツリーを辿りながら回 収対象を探す 4. DBの稼働状況を考慮しない • リソースマネージャー? Vacuumの問題
16.
16Copyright©2018 NTT Corp.
All Rights Reserved. • 富士通オーストラリアの開発者が提案 • PostgreSQLのストレージ周りは、他のコンポーネントと 密に連携しているので調整が大変そう • FDW(SQL/MEDの実装系)との比較 • FDWはDDLに対応していない Pluggable Storage Engine
17.
17Copyright©2018 NTT Corp.
All Rights Reserved. • 同じトランザクションモデルを使う、もしくはトランザ クションに対応しない • 同じWALストリームを利用する • タプルはTID(TupleID:ブロック番号とオフセット)によ って識別される • ストレージによって異なるMVCCを実装できるようにす る • など ストレージエンジンAPIで合意していること
18.
18Copyright©2018 NTT Corp.
All Rights Reserved. PostgreSQLのストレージAPI
19.
19Copyright©2018 NTT Corp.
All Rights Reserved. (参考)MySQLのストレージAPI https://dev.mysql.com/doc/internals/en/api-reference.html
20.
20Copyright©2018 NTT Corp.
All Rights Reserved. • EnterpriseDB社が開発中の新しいストレージフォーマット • heap = PostgreSQLの追記型テーブルの呼称 • UNDOログを使ってin-place updateを可能にする • 今月始めにgithubで公開&コミュニティに提案 • https://github.com/EnterpriseDB/zheap zheap
21.
21Copyright©2018 NTT Corp.
All Rights Reserved. • ストレージAPI対応としているが、リポジトリ上のコー ドではストレージAPIを使っていない • UNDOログの実装自体は一般的なもの • 古いタプルをUNDOログに退避して、ROLLBACK時に戻す • heapと比べて、 • ゴミタプルがたまりにくい(テーブルの肥大化を避けれる) • タプルヘッダが小さい(xmin/xmaxはない) • ページ毎にUNDOログへのポインタを持つ • Vacuumが必要ない。XID周回もない。 特徴 ※2018/3/30現在の情報です。将来変更されるかもし れませんし、私がコードを見ただけなので間違っている かもしれません。
22.
22Copyright©2018 NTT Corp.
All Rights Reserved. • ロングトランザクションがいる限りUNDOログ領域が大 きくなる • ロングトランザクションが終わると、undo workerが必要無くな ったUNDOログを消す • ページ毎にあるUNDOログへのポインタは最大4個 • ページ内の4タプル以上が同時に更新されると、ポインタの空き ができるまで止まる • undo workerが非同期的に必要なくなったUNDOログ領 域を削除する • タプル削除後、領域を再利用するコードが見つけられな かった 特徴(2) ※2018/3/30現在の情報です。将来変更されるかもし れませんし、私がコードを見ただけなので間違っている かもしれません。
23.
23Copyright©2018 NTT Corp.
All Rights Reserved. イメージ backendbackendbackend UPDATE INSERT UPDATE INSERT UPDATE lp tuple UPDATE UNDOログ・ファイル (1ファイル = 4MB) ページ • 1つのbackendにつき、1つのUNDOログファイルが割り当てられる • 各UNDOログファイルは、4MBのUNDOログセグメントに分けられている • 削除される単位も4MBのファイル • 各UNDOログファイルの状況は、DSMで共有 • DSMは必要になった分だけ確保されるようになっている • $PGDATA/base/undoにUNDOログを保存。$PGDATA/pg_undoに永続化用のデ ータを保存。 lp tuple
24.
24Copyright©2018 NTT Corp.
All Rights Reserved. テーブルサイズ比較 http://amitkapila16.blogspot.jp/2018/03/zheap-storage-engine-to-provide-better.html
25.
25Copyright©2018 NTT Corp.
All Rights Reserved. • Vacuumの効率化 • 並列化 • 局所化 • zheap • UNDOログベースのテーブル • Vacuumが必要なくなる • Pluggable Storage Engineが導入されるとPostgreSQL本体でも使 えるようになるかも まとめ
Download now