SlideShare a Scribd company logo
1 of 15
© 2023 NTT DATA Corporation 1
第39回 PostgreSQLアンカンファレンス@オンライン
MesonでPostgreSQLをビルドしてみよう!
2023年2月20日
株式会社NTTデータ 藤井 雅雄
© 2023 NTT DATA Corporation 2
自己紹介
藤井 雅雄
Database Technical Lead @ NTTデータ
データベース研究開発
PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション
WAL圧縮
バックアップ進捗確認
pg_bigm(全文検索モジュール) コミッタ
fujii_masao
MasaoFujii
© 2023 NTT DATA Corporation 3
本講演について
講演資料は、後日、NTTデータのSlideShareアカウント上で公開予定です。
https://www.slideshare.net/nttdata-tech
今日紹介するPostgreSQL16に関する内容は、
正式リリースまでの間に変更となる可能性があることにご注意ください!!
講演資料に掲載の検証結果は、ノートPC上の簡易計測で取得したものです。
環境や条件などによっては、異なる検証結果になる可能性があるためご了承ください。
© 2023 NTT DATA Corporation 4
MesonでPostgreSQLを
ビルドしてみよう!
© 2023 NTT DATA Corporation 5
2022年9月のビルド関連ファイルへのコミット
$ git log --since 2022-09-01 --until 2022-09-30 --pretty=format:%s
configure src/tools/msvc/Solution.pm configure.ac src/include/pg_config.h.in src/include/port.h
Restore pg_pread and friends.
meson: Add initial version of meson based build system
Add definition pg_attribute_aligned() for MSVC
Harmonize more parameter names in bulk.
Remove DLLTOOL, DLLWRAP from configure / Makefile.global.in
aix: xlc: Use -Wl,-b,expfull for old compiler versions
Clean up minor inconsistencies in pg_attribute_printf() usage.
Use SIGNAL_ARGS consistently to declare signal handlers.
Bump minimum Perl version to 5.14
configure: Expand -fvisibility checks to more compilers, test for -qvisibility
Bump minimum version of Flex to 2.5.35
Bump minimum version of Bison to 2.3
Mesonベースのビルドシステムをv16からサポート。
以降、ソースツリー内で成熟させていく方針
https://wiki.postgresql.org/wiki/Meson
https://www.postgresql.org/docs/devel/install-meson.html
既存ビルドシステムの課題への対応
• Autoconfは古くなりつつあり、それを扱える開発者が少なくなってきている
• 再帰的なmakeは依存性の問題を解決するのが難しく、インクリメンタルなビルドには時間がかかる
• MSVCビルドシステムは、Windowsを使っていない開発者にとってはメンテナンスが難しく、テストはシリ
アルに実行される
前回PostgreSQLアンカンファレンス
資料からの再掲(*1)
(*1) PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
https://www.slideshare.net/nttdata-tech/postgresql-development-community-activities-2022-pgunconf38-nttdata
© 2023 NTT DATA Corporation 6
PostgreSQLバージョン16からMesonを使ったビルドシステムをサポート予定
既にPostgreSQLバージョン16開発版(現在のmasterブランチ)はMesonでビルド可能
MesonによるPostgreSQLのビルド方法を説明するPostgreSQLドキュメント内のページ
https://www.postgresql.org/docs/devel/install-meson.html
Mesonによるビルドシステムの各種情報を整理しているPostgreSQLコミュニティのWikiページ
https://wiki.postgresql.org/wiki/Meson
Autoconf+MakeやMSVCによる既存ビルドシステムの課題について、新しいビルドシステムで対応
• Autoconfは古くなりつつあり、それを扱える開発者が少なくなってきている
• 再帰的なmakeは依存性の問題を解決するのが難しく、インクリメンタルなビルドには時間がかかる
• MSVC独自ビルドシステムは、Windowsを使っていない開発者にとってはメンテナンスが難しく、テストはシリアルに実
行される(時間がかかる)
➡ 既存ビルドシステムのまま少しずつ改善することもできるが、Mesonによる近代的なビルドシステムに移行して対応する
方がよいと判断
© 2023 NTT DATA Corporation 7
Meson
高速でユーザフレンドリなオープンソースのビルドシステム
https://mesonbuild.com/
実際のビルド作業は、Ninja(スピード重視の軽量なビルドシステム)やMSBuildで実施
https://ninja-build.org/
他の大きなOSS(QEMUやGNOMEの大部分、systemdなど)でもMesonの採用が広がっている
https://mesonbuild.com/Users.html
Pythonで書かれていて貢献しやすい
実際、Mesonによるビルドシステムを提案・実装したPostgreSQLコミッタのAndresさんは、Mesonの開発にも貢献
https://github.com/mesonbuild/meson/commits?author=anarazel
© 2023 NTT DATA Corporation 8
Mesonのインストール
https://wiki.postgresql.org/wiki/Meson#Installing_Meson
MacOS
$ brew install meson
CentOS 8
# dnf -y install dnf-plugins-core
# dnf config-manager --set-enabled crb
# dnf -y install meson
© 2023 NTT DATA Corporation 9
典型的なPostgreSQLビルド方法の比較
AutoconfとMakeによる
従来から利用可能なビルド方法
MesonとNinjaによる
新しく利用可能なビルド方法
PostgreSQLの
コンパイル
$ ./configure オプション
$ make
$ meson setup ビルドディレクトリ オプション
$ cd ビルドディレクトリ
$ ninja
PostgreSQLの
インストール
$ su
# make install
# exit
$ su
# ninja install
# exit
ドキュメントの
コンパイル
$ make docs $ ninja docs
リグレッション
テスト
$ make check-world $ meson test
コマンドの比較表はPostgreSQLのWikiを参照
https://wiki.postgresql.org/wiki/Meson
© 2023 NTT DATA Corporation 10
MesonとNinjaはデフォルトでパラレル実行
makeは、コンパイルやリグレッションテストをデフォルトでシリアル実行
パラレル実行させるには、makeに-jオプションでパラレル度を指定する
ninjaは、ビルド環境のCPU数を自動的に検知して、デフォルトでコンパイルをパラレル実行
-jオプションでパラレル度を指定することも可能
meson testも、デフォルトでリグレッションテストをパラレル実行
--num-processesオプションでパラレル度を指定することも可能
© 2023 NTT DATA Corporation 11
MesonとNinjaでのいい感じ?の進捗報告
ninjaによるコンパイル時の進捗報告
meson testによるリグレッションテスト時の進捗報告
© 2023 NTT DATA Corporation 12
コンパイルやリグレッションテストの実行時間の比較
できるだけ同じ条件で各ビルドシステムによるコンパイルやリグレッションテストの実行時間を比較する。
• AutoconfとMakeによる従来からのビルドシステム
• MesonとNinjaによる新しいビルドシステム
実行時間はtimeコマンドで計測して、3回計測した中間値を結果として採用する。
ビルド環境
• MacBook Pro
• プロセッサ:2.4 GHz クアッドコアIntel Core i5
• メモリ:16 GB 2133 MHz LPDDR3
ビルド対象は、以下のIDのコミットでmasterブランチからチェックアウトしたソース
5352ca22e0 Rename force_parallel_mode to debug_parallel_query
© 2023 NTT DATA Corporation 13
実行時間を比較する"ほぼ同じ"条件のコマンド
Autoconf + Make Meson + Ninja
コンパイル
準備
./configure
--prefix=/opt/test1
--enable-debug
--enable-cassert
--enable-tap-tests
--with-lz4
--with-zstd
meson setup build
--prefix=/opt/test2
--debug
-Dcassert=true
-Dtap_tests=enabled
-Dlz4=enabled
-Dzstd=enabled
-Dbonjour=disabled -Dlibxml=disabled
-Dlibxslt=disabled -Dpam=disabled
-Dplperl=disabled -Dplpython=disabled
-Dpltcl=disabled -Dldap=disabled
PostgreSQL
コンパイル
make world-bin -j 10 -s ninja -j 10
PostgreSQL
インストール
make install ninja install
ドキュメント
コンパイル
make docs ninja docs
リグレッション
テスト
make check-world -j 10 -s meson test --num-processes 10
今回は、lz4などの一部の追加機能のみを有効化。
Mesonでは、追加機能に必要なソフトウェアがイン
ストール済であれば自動的にその追加機能が有効
になるのがデフォルトのため、今回は複数の追加機
能について明示的に無効化する。
今回は、パラレル度を明示的に10に設定
contribモジュールまでコンパイル
© 2023 NTT DATA Corporation 14
実行時間の計測結果
Autoconf + Make Meson + Ninja
コンパイル
準備
./configure
--prefix=/opt/test1
--enable-debug
--enable-cassert
--enable-tap-tests
--with-lz4
--with-zstd
meson setup build
--prefix=/opt/test2
--debug
-Dcassert=true
-Dtap_tests=enabled
-Dlz4=enabled
-Dzstd=enabled
-Dbonjour=disabled -Dlibxml=disabled
-Dlibxslt=disabled -Dpam=disabled
-Dplperl=disabled -Dplpython=disabled
-Dpltcl=disabled -Dldap=disabled
PostgreSQL
コンパイル
make world-bin -j 10 -s ninja -j 10
PostgreSQL
インストール
make install ninja install
ドキュメント
コンパイル
make docs ninja docs
リグレッション
テスト
make check-world -j 10 -s meson test --num-processes 10
105.5秒 112.6秒
413.1秒 351.6秒
60.0秒
8.2秒
34.6秒
48.2秒
10.8秒
24.3秒
© 2023 NTT DATA Corporation 15
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot

What's hot (20)

PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUC
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もうPostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もう
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Similar to MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)

Similar to MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料) (20)

PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
 
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
 
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
 
zozotown real time linkage infrastructure
zozotown real time linkage infrastructurezozotown real time linkage infrastructure
zozotown real time linkage infrastructure
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 

More from NTT DATA Technology & Innovation

More from NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 

Recently uploaded

Recently uploaded (10)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2023 NTT DATA Corporation 1 第39回 PostgreSQLアンカンファレンス@オンライン MesonでPostgreSQLをビルドしてみよう! 2023年2月20日 株式会社NTTデータ 藤井 雅雄
  • 2. © 2023 NTT DATA Corporation 2 自己紹介 藤井 雅雄 Database Technical Lead @ NTTデータ データベース研究開発 PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション WAL圧縮 バックアップ進捗確認 pg_bigm(全文検索モジュール) コミッタ fujii_masao MasaoFujii
  • 3. © 2023 NTT DATA Corporation 3 本講演について 講演資料は、後日、NTTデータのSlideShareアカウント上で公開予定です。 https://www.slideshare.net/nttdata-tech 今日紹介するPostgreSQL16に関する内容は、 正式リリースまでの間に変更となる可能性があることにご注意ください!! 講演資料に掲載の検証結果は、ノートPC上の簡易計測で取得したものです。 環境や条件などによっては、異なる検証結果になる可能性があるためご了承ください。
  • 4. © 2023 NTT DATA Corporation 4 MesonでPostgreSQLを ビルドしてみよう!
  • 5. © 2023 NTT DATA Corporation 5 2022年9月のビルド関連ファイルへのコミット $ git log --since 2022-09-01 --until 2022-09-30 --pretty=format:%s configure src/tools/msvc/Solution.pm configure.ac src/include/pg_config.h.in src/include/port.h Restore pg_pread and friends. meson: Add initial version of meson based build system Add definition pg_attribute_aligned() for MSVC Harmonize more parameter names in bulk. Remove DLLTOOL, DLLWRAP from configure / Makefile.global.in aix: xlc: Use -Wl,-b,expfull for old compiler versions Clean up minor inconsistencies in pg_attribute_printf() usage. Use SIGNAL_ARGS consistently to declare signal handlers. Bump minimum Perl version to 5.14 configure: Expand -fvisibility checks to more compilers, test for -qvisibility Bump minimum version of Flex to 2.5.35 Bump minimum version of Bison to 2.3 Mesonベースのビルドシステムをv16からサポート。 以降、ソースツリー内で成熟させていく方針 https://wiki.postgresql.org/wiki/Meson https://www.postgresql.org/docs/devel/install-meson.html 既存ビルドシステムの課題への対応 • Autoconfは古くなりつつあり、それを扱える開発者が少なくなってきている • 再帰的なmakeは依存性の問題を解決するのが難しく、インクリメンタルなビルドには時間がかかる • MSVCビルドシステムは、Windowsを使っていない開発者にとってはメンテナンスが難しく、テストはシリ アルに実行される 前回PostgreSQLアンカンファレンス 資料からの再掲(*1) (*1) PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料) https://www.slideshare.net/nttdata-tech/postgresql-development-community-activities-2022-pgunconf38-nttdata
  • 6. © 2023 NTT DATA Corporation 6 PostgreSQLバージョン16からMesonを使ったビルドシステムをサポート予定 既にPostgreSQLバージョン16開発版(現在のmasterブランチ)はMesonでビルド可能 MesonによるPostgreSQLのビルド方法を説明するPostgreSQLドキュメント内のページ https://www.postgresql.org/docs/devel/install-meson.html Mesonによるビルドシステムの各種情報を整理しているPostgreSQLコミュニティのWikiページ https://wiki.postgresql.org/wiki/Meson Autoconf+MakeやMSVCによる既存ビルドシステムの課題について、新しいビルドシステムで対応 • Autoconfは古くなりつつあり、それを扱える開発者が少なくなってきている • 再帰的なmakeは依存性の問題を解決するのが難しく、インクリメンタルなビルドには時間がかかる • MSVC独自ビルドシステムは、Windowsを使っていない開発者にとってはメンテナンスが難しく、テストはシリアルに実 行される(時間がかかる) ➡ 既存ビルドシステムのまま少しずつ改善することもできるが、Mesonによる近代的なビルドシステムに移行して対応する 方がよいと判断
  • 7. © 2023 NTT DATA Corporation 7 Meson 高速でユーザフレンドリなオープンソースのビルドシステム https://mesonbuild.com/ 実際のビルド作業は、Ninja(スピード重視の軽量なビルドシステム)やMSBuildで実施 https://ninja-build.org/ 他の大きなOSS(QEMUやGNOMEの大部分、systemdなど)でもMesonの採用が広がっている https://mesonbuild.com/Users.html Pythonで書かれていて貢献しやすい 実際、Mesonによるビルドシステムを提案・実装したPostgreSQLコミッタのAndresさんは、Mesonの開発にも貢献 https://github.com/mesonbuild/meson/commits?author=anarazel
  • 8. © 2023 NTT DATA Corporation 8 Mesonのインストール https://wiki.postgresql.org/wiki/Meson#Installing_Meson MacOS $ brew install meson CentOS 8 # dnf -y install dnf-plugins-core # dnf config-manager --set-enabled crb # dnf -y install meson
  • 9. © 2023 NTT DATA Corporation 9 典型的なPostgreSQLビルド方法の比較 AutoconfとMakeによる 従来から利用可能なビルド方法 MesonとNinjaによる 新しく利用可能なビルド方法 PostgreSQLの コンパイル $ ./configure オプション $ make $ meson setup ビルドディレクトリ オプション $ cd ビルドディレクトリ $ ninja PostgreSQLの インストール $ su # make install # exit $ su # ninja install # exit ドキュメントの コンパイル $ make docs $ ninja docs リグレッション テスト $ make check-world $ meson test コマンドの比較表はPostgreSQLのWikiを参照 https://wiki.postgresql.org/wiki/Meson
  • 10. © 2023 NTT DATA Corporation 10 MesonとNinjaはデフォルトでパラレル実行 makeは、コンパイルやリグレッションテストをデフォルトでシリアル実行 パラレル実行させるには、makeに-jオプションでパラレル度を指定する ninjaは、ビルド環境のCPU数を自動的に検知して、デフォルトでコンパイルをパラレル実行 -jオプションでパラレル度を指定することも可能 meson testも、デフォルトでリグレッションテストをパラレル実行 --num-processesオプションでパラレル度を指定することも可能
  • 11. © 2023 NTT DATA Corporation 11 MesonとNinjaでのいい感じ?の進捗報告 ninjaによるコンパイル時の進捗報告 meson testによるリグレッションテスト時の進捗報告
  • 12. © 2023 NTT DATA Corporation 12 コンパイルやリグレッションテストの実行時間の比較 できるだけ同じ条件で各ビルドシステムによるコンパイルやリグレッションテストの実行時間を比較する。 • AutoconfとMakeによる従来からのビルドシステム • MesonとNinjaによる新しいビルドシステム 実行時間はtimeコマンドで計測して、3回計測した中間値を結果として採用する。 ビルド環境 • MacBook Pro • プロセッサ:2.4 GHz クアッドコアIntel Core i5 • メモリ:16 GB 2133 MHz LPDDR3 ビルド対象は、以下のIDのコミットでmasterブランチからチェックアウトしたソース 5352ca22e0 Rename force_parallel_mode to debug_parallel_query
  • 13. © 2023 NTT DATA Corporation 13 実行時間を比較する"ほぼ同じ"条件のコマンド Autoconf + Make Meson + Ninja コンパイル 準備 ./configure --prefix=/opt/test1 --enable-debug --enable-cassert --enable-tap-tests --with-lz4 --with-zstd meson setup build --prefix=/opt/test2 --debug -Dcassert=true -Dtap_tests=enabled -Dlz4=enabled -Dzstd=enabled -Dbonjour=disabled -Dlibxml=disabled -Dlibxslt=disabled -Dpam=disabled -Dplperl=disabled -Dplpython=disabled -Dpltcl=disabled -Dldap=disabled PostgreSQL コンパイル make world-bin -j 10 -s ninja -j 10 PostgreSQL インストール make install ninja install ドキュメント コンパイル make docs ninja docs リグレッション テスト make check-world -j 10 -s meson test --num-processes 10 今回は、lz4などの一部の追加機能のみを有効化。 Mesonでは、追加機能に必要なソフトウェアがイン ストール済であれば自動的にその追加機能が有効 になるのがデフォルトのため、今回は複数の追加機 能について明示的に無効化する。 今回は、パラレル度を明示的に10に設定 contribモジュールまでコンパイル
  • 14. © 2023 NTT DATA Corporation 14 実行時間の計測結果 Autoconf + Make Meson + Ninja コンパイル 準備 ./configure --prefix=/opt/test1 --enable-debug --enable-cassert --enable-tap-tests --with-lz4 --with-zstd meson setup build --prefix=/opt/test2 --debug -Dcassert=true -Dtap_tests=enabled -Dlz4=enabled -Dzstd=enabled -Dbonjour=disabled -Dlibxml=disabled -Dlibxslt=disabled -Dpam=disabled -Dplperl=disabled -Dplpython=disabled -Dpltcl=disabled -Dldap=disabled PostgreSQL コンパイル make world-bin -j 10 -s ninja -j 10 PostgreSQL インストール make install ninja install ドキュメント コンパイル make docs ninja docs リグレッション テスト make check-world -j 10 -s meson test --num-processes 10 105.5秒 112.6秒 413.1秒 351.6秒 60.0秒 8.2秒 34.6秒 48.2秒 10.8秒 24.3秒
  • 15. © 2023 NTT DATA Corporation 15 その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。