【PostgreSQL 12 新機能】pg_stat_progress_create_index と pg_stat_progress_cluster を検証してみた

こんにちは。サイオステクノロジー OSS サポート担当 Y です。

今回は PostgreSQL 12 (現時点ではまだ beta 版) で追加される予定の統計情報ビューである pg_stat_progress_create_index 及び pg_stat_progress_cluster について検証してみました。(※以下の内容は CentOS 7.6/PostgreSQL 12beta2 にて検証しています。)

■はじめに

次の PostgreSQL のメジャーバージョンである PostgreSQL 12 では、複数の機能追加/強化が予定されています。今回は PostgreSQL 12beta2 を使って、pg_stat_progress_create_index と pg_stat_progress_cluster の検証を実施してみました。

pg_stat_progress_create_index では CREATE INDEX コマンドの進捗状況を、pg_stat_progress_cluster では VACUUM FULL と CLUSTER コマンドの進捗状況をそれぞれ確認することが可能です。

■検証

それでは、さっそく検証してみます。

まずは、以下の様に検証用のテーブルを作成します。

では、このテーブル test に INDEX を作成しつつ、pg_stat_progress_create_index で進捗状況を確認してみます。

“SELECT * FROM pg_stat_progress_create_index” をループ実行しつつ、別のターミナルで CREATE INDEX 文を実行してみます。

[ターミナル 1]

[ターミナル 2]

すると、上記の様に INDEX 作成の進捗情報を確認することができました。

次に、pg_stat_progress_cluster を検証してみます。

VACUUM FULL の検証を実施するために、先に適当な更新処理及び VACUUM を実施して再利用可能な領域 (VACUUM FULL で処理する領域) を発生させておきます。

この状態で “SELECT * FROM pg_stat_progress_cluster” をループ実行しつつ、別のターミナルで VACUUM FULL 文を実行してみます。

[ターミナル1]

[ターミナル2]

すると、上記の様に VACUUM FULL の進捗情報を確認することができました。

また、command 列に “VACUUM FULL” と出力されていることから、実行されている処理が VACUUM FULL であることが確認できます。(次に実施する CLUSTER 文では、この command 列に “CLUSTER” と出力されます)

最後に、CLUSTER 文の進捗情報を pg_stat_progress_cluster で確認してみます。

VACUUM FULL の検証と同じ様に、”SELECT * FROM pg_stat_progress_cluster” をループ実行しつつ、別のターミナルで CLUSTER 文を実行してみます。

[ターミナル1]

[ターミナル2]

すると、上記の様に CLUSTER の進捗情報を確認することができました。

また、先ほどの VACUUM FULL の場合と異なり command 列に “CLUSTER” と出力されていることから、実行されている処理が CLUSTER であることが確認できます。

■最後に

今回は PostgreSQL 12 で実装予定の pg_stat_progress_create_index 及び pg_stat_progress_cluster について検証してみました。

CREATE INDEX, VACUUM FULL, CLUSTER は、それなりの負荷が発生することや競合する範囲が広めのロックが取得されることから、(特に運用中の DB では) 実行に慎重になるケースが多く、そのような状況で処理に時間を要していると、なかなかプロンプトが返ってこずに不安になることもあると思います。

そのような場合でも、今回検証した pg_stat_progress_create_index や pg_stat_progress_cluster を利用すれば、それらの処理の進捗状況を確認することができるので、DB の運用をされている方々には嬉しい新機能なのではないかと思います。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*