
- EDB
- PostgreSQL
PostgreSQLの拡張機能「system_stats」のご紹介
EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。
|
Index
「EPAS15の新機能TDE(Transparent Data Encryption)を徹底解剖【前編】 」では下記項目 1.~4. についてご紹介しました。後編では項目 5.~7. についてご紹介します。
TDEを有効化すると、データの暗号化・復号を行うことでシステムに追加の負荷(オーバーヘッド)が発生します。そのため、TDEを使用するとパフォーマンスに影響が出ることが予想されます。実際にどの程度パフォーマンスに影響が出るのか、ベンチマークソフトウェア(HammerDB)を使い、次の2種類のベンチマークを行ってみました。
ベンチマークの実行にあたり「EPAS15 の実行環境」、「HammerDB の実行環境」をそれぞれ次の構成で用意しました。
EPAS実行環境:
項目 | 値 |
---|---|
インスタンスタイプ | m6a.2xlarge |
vCPU | 8 |
メモリ | 32 GiB |
ストレージ | Amazon EBS gp2 1024 GiB |
HammerDB実行環境:
項目 | 値 |
---|---|
インスタンスタイプ | m6a.2xlarge |
vCPU | 8 |
メモリ | 32 GiB |
ストレージ | Amazon EBS gp2 50 GiB |
また、検証環境の構成に合わせて EPAS15 のパラメータを次のとおり変更しています。checkpoint_timeout と max_wal_size の設定を初期値より大きくしているのは、checkpoint によるスコアへの影響を排除するためです。また、SSDボリュームを利用するためランダムページアクセスのプランナコスト定数(random_page_cost)を調整しています。
パラメータ | 初期値 | 調整後 |
---|---|---|
shared_buffers | 8GB | 16GB |
maintenance_work_mem | 64MB | 1GB |
checkpoint_timeout | 5min | 60min |
max_wal_size | 1GB | 150GB |
effective_cache_size | 4GB | 16GB |
random_page_cost | 4 | 1.1 |
![]() |
---|
まずは、スケールファクター 50 (データベースサイズ:約5GB)のデータで TPROC-C ベンチマークを行っていきます。ベンチマークの計測時間は20分、負荷を掛ける並列実行ユーザー数は 2、4、6、8 の4パターンで行います。
項目 | 値 |
---|---|
スケールファクター | 50 |
データベースサイズ | 約5GB |
ベンチマーク計測時間 | 20分 |
並列実行ユーザー数 | 4パターン(2,4,6,8) |
結果は次のグラフで示すとおりになりました。 青軸がTDEを使っていない環境、 オレンジ軸がTDEが有効な環境 の NOPM(New Orders per Minute)を表しています。 各環境のスコア差は 2% 未満に収束しており、パフォーマンスに大きな差が無いことが確認できます。
|
![]() |
---|
続いて、I/O の発生機会を増やした場合にどうなるのかを確認するため、以下の変更を加えてベンチマークを行いました。
項目 | 値 |
---|---|
スケールファクター | 200 |
データベースサイズ | 約20GB |
ベンチマーク計測時間 | 60分 |
並列実行ユーザー数 |
4パターン(2,4,6,8)
|
PostgreSQLのパラメータ
|
checkpoint_timeout を 10min に変更
計測中にチェックポイント(メモリ上のダーティバッファ をディスクに書き込む処理)が発生するように変更 |
ベンチマークの結果は次のグラフで示すとおり、こちらも NOPMの差が2%未満に収束することが確認できました!
|
以上のベンチマーク結果から、TPRO-C(OLTP)における影響は非常に軽微であると言えます。
※ HammerDB には、EDB 向けのオプション pg_oracompat があります。これを有効にして生成されたデータでは適切なベンチマーク結果が得られないことが判明したため今回は使用していません。皆さんも HammerDB 利用時にはご注意ください。
![]() |
---|
スケールファクターは 10 (データベースサイズ:約10GB)でデータベースを準備して TPROC-H を実行してみました。
項目 | 値 |
---|---|
スケールファクター | 10 |
データベースサイズ | 約10GB |
ベンチマーク計測時間 | ― 秒 |
実行クエリ数 | 22パターン(1~ 22) |
22本のクエリの実行時間は下記グラフで示すとおりの結果になりました。縦軸がクエリの実行時間(秒数)です。青軸がTDEを使っていない環境、オレンジ軸がTDEが有効な環境の結果ですが、22本全てにおいて実行時間に大きな差異はありませんでした。
|
この結果から、データウェアハウス(DWH)分野における、データの集計、分析、検索のパフォーマンスに関しても影響が非常に小さいことが伺えます。
TDEを有効化すると周辺ツールにも影響が出ることが懸念されるため、主要な機能・周辺ツールについても検証を行いました。その結果、次の機能については影響がないことを確認済みです。
Streaming Replication | スタンバイDBを作成できるレプリケーション機能 |
Postgres Enterprise Manager | DBの監視、管理ができるWEBコンソールを提供する機能 |
EDB Postgres Replication Server | EPASやその他の商用DB間でテーブルデータを複製する機能 |
Barman | バックアップの取得・管理を行う機能 |
弊社検証の中で影響が確認できた周辺ツールは EDB*Loader です。 従来型パス(通常のINSERT処理と同様にキャッシュを経由してデータの挿入を行う方法)でロードする場合は特に問題ありませんが、ダイレクトパス(直接リレーションファイルにデータを書き込む方法)でロードすると、リレーションファイルが破損することを確認しました。
TDE環境では、メモリ上からディスクにデータを書き出す時にデータの暗号化が行われます。しかし、ダイレクトパスロードでは、データの暗号化処理がバイパスされてしまい、暗号化されていないデータがリレーションファイルに書き込まれます。その結果、暗号化データと非暗号化データがリレーションファイルに混在してしまいます。
この振る舞いについてはEDB社にも報告を行い、不具合と判断されています。将来的には修正されることが想定されますが、ベースリリース(ver 15.2.0)で EDB*Loader のダイレクトロード機能を利用する場合には、次期修正バージョンまでTDEのご利用はお控えください。
また、TDE環境で次のコマンドを実行する場合、TDE固有のオプション指定が必要です。コマンドの影響は公式ドキュメント( EDB Docs - Transparent Data Encryption )で解説されています。
TDEを有効化するとWALサイズが増える可能性があります。
TDEを有効にすると、各タプルレコードのヘッダーに存在するタプル状態を保持するビットであるヒントビットのロギングが自動的に有効になります。ヒントビットが有効な環境では、SELECT文の実行でもヒントビットの更新が行われるため、チェックポイント後のSELECT処理でFull Page Writesが働き、WALのサイズが増加する傾向があります。
上記の理由から、wal_log_hints をデフォルトの off で運用されている環境の場合、TDE を有効化することで WAL の生成量が増える可能性があるため注意が必要です。
TDEを有効にした環境ではディスクに書き出される一時ファイルも暗号化されます。
暗号化によって一時ファイルのサイズは約2.5倍に肥大化することが確認できています。そのため、一時ファイルの書き出しが起きる処理では、ディスクI/Oによる負荷が高くなり、パフォーマンスが劣化する可能性があります。
TDE を有効化にする場合、log_temp_files を 0 に設定した上で負荷テスト(ストレステスト、ロードテスト)を行い、どの程度の一時ファイル書き出しが行われるかを確認しておくことをお勧めします。一時ファイル書き出しによるパフォーマンスの低下が許容できない程度の場合、work_mem を増やして一時ファイルの書き出しを削減することをご検討ください。
TDEは「マスターキー」のローテーションに対応しています。
一般的なキー管理ソリューションと同様、データの暗号化を行う「データ暗号化キー」のローテーションはできませんが、「データ暗号化キー」の暗号化を行う「マスターキー」のローテーションが可能です。マスターキーのローテーションは、定期的に暗号化キーを変更するメンテナンスや、万が一、マスターキーが漏洩した場合の対処に必要なプロセスです。
2023年5月11日にマイナーリリース(v15.3.0)がリリースされたタイミングで公式ドキュメント( EDB Docs - Transparent Data Encryption )にもキーローテーションの手順が更新されました。
EPAS15に追加されたTDEについて、アーキテクチャ、有効化の方法、暗号化方式、パフォーマンス、および周辺ツールへの影響を前編・後編の2回にわたって解説しました。周辺ツールの利用や運用に関する注意点はいくつかありますが、ディスクに書き出されるユーザーデータが透過的に世界標準のAESで暗号化されるメリットは非常に大きいと思います。また、最も懸念していたパフォーマンスへの影響も驚くほど軽微なものでした。当記事がこれからTDEの利用を検討される方々の一助になれば幸いです。
![]() |
---|
2017年に中途入社。Oracle Database、EDB Postgres/PostgreSQL のサポート経験を経て、2020年からバックサポートを担当。DBとアプリケーションを繋ぐミドルウェア製品のスペシャリスト。トレンドな技術は積極的に触れるほど好奇心旺盛。最近はプロアクティブなサポートを目指して粉骨砕身。趣味はボードゲーム。...show more
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。
PostgreSQLのオプティマイザがインデックスを適切に使用できない理由は様々ですが、本記事ではJDBC⇔PostgreSQL間でデータ型の不一致がインデックスの使用にどういった悪影響を及ぼすかを見ていきます
EDB Postgres Workload Reportsは、Postgresデータベースのパフォーマンス診断とトラブルシューティングを強化する新しいツールです。OracleのAWRに似た詳細なレポートを提供し、データベースの問題を迅速に特定・解決できるようサポートします。本記事では概要と利用手順をご紹介します。