【PostgreSQL 12 新機能】トランザクション分離レベル “SERIALIZABLE” でのパラレルクエリを検証してみた

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

今回は PostgreSQL 12 (現時点ではまだ beta 版) でのパラレルクエリについて検証してみました。(※以下の内容は CentOS 7.6/PostgreSQL 11.4/PostgreSQL 12beta2 にて検証しています。)

■はじめに

次の PostgreSQL のメジャーバージョンである PostgreSQL 12 では、複数の機能追加/強化が予定されています。今回は PostgreSQL 12beta2 を使って、パラレルクエリの動作を検証してみました。

PostgreSQL 11 までは、トランザクション分離レベルが SERIALIZABLE の場合、パラレルクエリが実行されません。しかし、PostgreSQL 12 からは、トランザクション分離レベルが SERIALIZABLE でもパラレルクエリが実行可能 (実行される可能性がある) になっています。

■PostgreSQL 11 で検証

まずは、PostgreSQL 11 での動作を確認してみます。

以下の様に、”READ COMMITTED”, “REPEATABLE READ”, “SERIALIZABLE” の 3つのトランザクション分離レベルで同じクエリ (パラレルクエリが実行されるようなクエリ) を実行してみました。

すると、トランザクション分離レベルが SERIALIZABLE の場合のみ、パラレルクエリが実行されず、Seq Scan が実行されていることが確認できます。

■PostgreSQL 12beta2 で検証

次に、PostgreSQL 12beta2 での動作を確認してみます。

PostgreSQL 11 での検証と同じ様に、”READ COMMITTED”, “REPEATABLE READ”, “SERIALIZABLE” の 3つのトランザクション分離レベルで同じクエリ (パラレルクエリが実行されるようなクエリ) を実行しました。

すると、PostgreSQL 12beta2 ではトランザクション分離レベルが SERIALIZABLE の場合であっても、パラレルクエリが実行されていることが確認できました。

■最後に

今回は PostgreSQL 12beta2 でパラレルクエリの検証を実施してみました。PostgreSQL 9.6 でパラレルクエリが実装されて以降、バージョンアップを重ねるごとに少しずつ機能が強化されているようです。

今回検証した PostgreSQL 12 での強化で、パラレルクエリによる性能向上の恩恵を受けることができる範囲が広がったのではないでしょうか。

PostgreSQL 12 では様々な機能が強化されているので、次回も PostgreSQL 12 の新機能の検証を実施してみようと思います。

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

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

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

コメント投稿

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


*