PostgreSQL 9.6をエンタープライズで使う性能や方法を検証 〜PGECons活動成果発表会開催

2017年6月13日(火)
高橋 正和

PostgreSQLエンタープライズ・コンソーシアム(PGECons)は5月15日、2016年度の活動について報告する「第16回PostgreSQLエンタープライズ・コンソーシアムセミナー ~2016年度活動成果発表会~」を都内で開催した。技術部会の各ワーキンググループ(WG)による技術検証など2016年の成果が報告された。

PGEConsは、ミッションクリティカル性の高いエンタープライズ領域へのPostgreSQLの普及を推進することを目的として設立された団体で、正会員17社、一般会員40社が集まっている。4月には発足5年を迎えた。

開会あいさつに立った理事長の小西史和氏(NTT)は、「今回は200名を超える登録があった。2016年にはPGConf.Asia 2016が日本で開催されたこともあり、また今年はPostgreSQL 10のリリースも予定されており、PostgreSQLの盛り上がりを感じる」と語った。

PGECons 理事 小西史和氏(NTT)
PGECons 理事 小西史和氏(NTT)

PostgreSQL 9.6はスケールアップ性能が向上

WG1(新技術検証WG)は、PostgreSQL 9.6の性能や新機能について、大規模基幹業務を想定して検証した結果を報告した。2016年度の活動テーマとしては、定点観測である「スケールアップ検証」や、新機能の「パラレルクエリ」、「Pgpool-II検証」、「JSON/JSONB」、「全文検索」、「VACUUM改善」が取り上げられた。

まず、スケールアップ検証のうち、参照系の性能について。PostgreSQL 9.2で検証を始めてから9.4まで大きな向上はなかったが、前バージョンの9.5で最大スループットの向上が見られたという。検証は、オンメモリでSQL 1文の負荷を大きくするという、CPUに負荷がかかる条件でpgbenchを実行した。PostgreSQL 9.6はクライアント数192で最高性能36,300TPSに達し、9.5から最大46%の向上があったという。CPU利用率は100%で、有効にCPUを利用できていることが確認できた。

続いて更新系。参照系の検証と同じマシンを用い、ストレージはデータベースクラスタとWALを別ボリュームにして検証した。PostgreSQL 9.6では9.5からスループットのピーク値が約30%向上し、またクライアント数192までスループットが伸びることを確認したという。

技術部会WG1の慶松明嗣氏(NEC)
技術部会WG1の慶松明嗣氏(NEC)
スケールアップ検証(参照系)検証結果
スケールアップ検証(参照系)検証結果
スケールアップ検証(更新系)検証結果
スケールアップ検証(更新系)検証結果

次にパラレルクエリ。PostgreSQL 9.6では、パラレルスキャン、パラレル結合、パラレル集約の3種類が実装された(デフォルト設定では無効)。2016年度の検証では、パラレルクエリの並列度と処理性能の関係の検証、パーティションによる処理性能向上との比較、テーブル結合時の挙動確認の3種類が検証された(3つ目の検証の報告は割愛)。並列度と処理性能については、ワーカー数40まで性能向上し、処理時間は約1/25に短縮したという。また、パーティションとの比較としては、パラレルクエリによりパーティションの弱点を補完できることを確認したという。

パラレルクエリの検証結果
パラレルクエリの検証結果

Pgpool-IIについては、「ネイティブレプリケーション」「ストリーミングレプリケーション(非同期)」「ストリーミングレプリケーション(同期)」(9.6から登場)の3種類のレプリケーション方式によってどう変わるかを検証した。結果としては、参照系ではいずれも同様にスケールアウトし、更新系では方式により特性が違うことが報告された。

Pgpool-IIの検証結果
Pgpool-IIの検証結果

JSON/JSONBについては、「RDB」「JSON」「JSONB」「ハイブリッドJSON」(検索キーのみPostgreSQLのカラムに)「ハイブリッドJSONB」の各モデルでの性能を比較した。格納性能ではRDBが最速であり、JSONとJSONBではロードはJSONが、インデックス作成はJSONBが速かった。検索性能ではRDBとハイブリッドモデルが最速で、JSONよりJSONBのほうが速かった。

JSON/JSONBの検証結果(格納性能)
JSON/JSONBの検証結果(格納性能)
JSON/JSONBの検証結果(検索性能)
JSON/JSONBの検証結果(検索性能)

全文検索については、日本語検索に対応したpg_trgm(トリグラム方式)、pg_bigm(バイグラム方式)、PGroongaの3種類を、Wikipediaの文章データで、英語キーワードと日本語キーワードで検証した。結果として、PGroongaはほとんどの場合に高速だがインデックスサイズが大きいこと、pg_bigmは英語キーワードでノイズ除去処理で時間がかかることなどの特性が報告された。

全文検索の検証結果
全文検索の検証結果

VACUUM改善については、PostgreSQL 9.6ではページ内容が凍結済みというフラグが追加され、古いまま更新されないデータの多いテーブルに有効とされている。検証結果として、未凍結のページだけスキャンしているという挙動を速度から確認したという。

VACUUM改善の検証結果
VACUUM改善の検証結果

商用データベースからPostgreSQLへの移行見積りのガイド

WG2(移行WG)は、商用データベースからPostgreSQLに移行するためのガイド文書の整備について報告した。

WG2は、異種DBMSシステムをPostgreSQLへ移行するプロセスが確立していないことが普及を妨げていると認識し、移行を検討する際のガイドラインを提示する活動をしている。これまで「異種DBMSからPostgreSQLへの移行ガイド」を14編、本編のみでも合計500ページ超の分量で作成している。

ただし、これまで移行作業の実施者向けのガイドが中心だったため、2016年度は採用を決定する立場の人を対象として、移行作業コストを把握するための「DB移行開発見積り編」を作成した。その中でも2016年度は、Oracleのデータベースオブジェクトを対象にした。ガイドはすでにPGEConsのサイトで公開されている。

活動報告では、「DB移行開発見積り編」のガイドからいくつか取り上げて紹介がなされた。たとえば、テーブルは、通常表として利用できるものはOracleと変わらず使え、一時テーブルは差があり、パーティションテーブルは機能の組み合わせで代替できるという。

作業にあたっては、当初はOracleのマニュアルに書かれた機能を順に比較していたが、それを業務で使う機能に絞ったという。なお、なお、関数やPL/SQLにも挑戦したが、2016年度には成果物まで至らなかったとのことだった。

また、OracleからPostgreSQLへの移行ツールOra2Pgの有効な範囲についても調査し報告がなされた。過去の成果物と比べると、最新バージョンではデータ型対応など改善されていることも多かったという。

2016年度のまとめとしては、見積もりという新しい観点でガイドを作れたことから、移行コスト見積もりは範囲を広げて今後も継続していくと語られた。ただし、1年という期間で成果を出すことに縛られてしまったことが反省され、今後は成果物作成完了の年度縛りが外れたと説明された。

技術部会WG2の山本明範氏(富士通)
技術部会WG2の山本明範氏(富士通)
「DB移行開発見積り編」目次
「DB移行開発見積り編」目次
Web上の「DB移行開発見積り編」
Web上の「DB移行開発見積り編」
比較は業務で使う機能に絞った
比較は業務で使う機能に絞った
移行ツールOra2Pg
移行ツールOra2Pg

レプリケーション機能と異種データベース連携の機能を調査

WG3(課題検討WG)は、毎年、2テーマに分かれて活動しているという。2016年度の活動としては、レプリケーションと異種データベース連携の2つのテーマで活動したとのことで、活動報告でもそれぞれの班ごとに報告がなされた。

まずレプリケーション班。2016年度には、ストリーミングレプリケーションの既存機能の整理および最新機能検証と、マルチマスタのBDR(双方向レプリケーション)を調査した。ストリーミングレプリケーションについては、レプリケーションスロット、同期レベル、pg_rewindによる巻き戻しの3つの機能を調査。それぞれ用途や注意点などをまとめた。

BDRは、主に地理的に分散したクラスタのための機能だ。切り離した場合の操作や、競合時の動作、ノード障害時の挙動確認などについて報告された。また、性能検証についても、大幅なレスポンス向上を確認したという。

竹内尚也氏(株式会社アシスト)
竹内尚也氏(株式会社アシスト)
レプリケーションスロット
レプリケーションスロット
同期レベル
同期レベル
pg_rewindによる巻き戻し
pg_rewindによる巻き戻し
BDR
BDR

異種データベース(DB)連携班では、PostgreSQL以外のデータベースとの連携について調査した。方式としては、外部データラッパ、ロジカルデコーディング、DB同期ツール、ETLツールの4種類を扱い、調査・評価して一覧表としてまとめたという。

外部データラッパについては、PostgreSQLの機能で使えることや、これまでいろいろなラッパーが出ていること、データをPotgreSQLに保存しない場合などに向いていると説明された。ロジカルデコーディングについては、更新内容を自由に伝搬できる反面、プラグインやプログラムの開発が必要となり、PostgreSQL上の一部のテーブルを共有したい場合に向いていると説明された。DB同期ツールについては、双方向に差分反映によるデータ更新ができることや、ラッパー非対応なデータベースとの連携などに使えることが説明された。ETLツールについては、対象データベースでのシステム開発の経験が少ないときや、開発期間や開発工数が少ないとき、アプリケーションの継続的な改修があり処理の可視化が必要なときなどに使えると説明された。

勝俣智成氏と原田登志氏(NTTテクノクロス)
勝俣智成氏と原田登志氏(NTTテクノクロス)
外部データラッパ
外部データラッパ
ロジカルデコーディング
ロジカルデコーディング
DB同期ツール
DB同期ツール
ETLツール
ETLツール

CR部会と運営委員会の報告も

技術部会のほか、CR(Community Relations)部会の報告もあった。CR部会は、国内のエンタプライズ分野での技術課題をPostgreSQL開発コミュニティにフィードバックしていくことを目的としており、2016年に発足した。2016年はほとんど技術課題を集約する段階だったという。その中で1点、メッセージID(エラー番号)付与機能について、PGConf.Asia 2016でフィードバックしたことが報告された。

樋口大輔氏(富士通)によるCR部会の報告
樋口大輔氏(富士通)によるCR部会の報告
CR部会の2016年度の活動
CR部会の2016年度の活動

また、運営委員会からも、2016年度の活動と2017年度の活動予定が報告された。2016年度の報告としては、毎年公開している成果物の形式をPDFからHTMLに変更したことが語られた。アクセスしやすさと同時に、海外の人が翻訳サイトにかけらえるようにするという。2017年度については発信力強化というテーマや、会員を活発化するためにテレビ会議による遠隔地からの参加について検討していることなどが語られた。

川畠輝聖氏(NEC)による運営委員会の報告
川畠輝聖氏(NEC)による運営委員会の報告
2017年度の活動方針
2017年度の活動方針

フリーランスのライター&編集者。IT系の書籍編集、雑誌編集、Web媒体記者などを経てフリーに。現在、「クラウドWatch」などのWeb媒体や雑誌などに幅広く執筆している。なお、同姓同名の方も多いのでご注意。

連載バックナンバー

仮想化/コンテナイベント

KubeCon報告からKubernetes対応版Dockerまで、Docker Meetup Tokyo #20開催

2018/1/30
コンテナーに関する勉強会「Docker Meetup Tokyo #20」が、2017年12月14日に開催された。11月に開催された「Docker Meetup Tokyo #19」に続く回となった。
仮想化/コンテナ

Red Hatが示したOpenShiftの将来とは

2018/1/24
Red Hatが推進するコンテナープラットフォームであるOpenShiftの1dayカンファレンスが開催された。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています