PostgreSQL 最新事情

SRA グループ プレミアムセミナー 2019
SRA OSS, Inc. 日本支社
近藤 雄太
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

1講演者 と 本講演のテーマ
【講演者】
名前
近藤 雄太
所属
SRA OSS, Inc. 日本支社

略歴
PostgreSQLのセミナ講師、サポート、コンサルティング等に従事。
最近はPostgreSQLをベースにしたデータベース製品PowerGresの開発リーダーを務める【本日の講演内容】

 PostgreSQL の最新情報
 Pgpool-II の最新情報

主に技術的な内容をお話しいたします

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

2

PostgreSQLとは PostgreSQL は多機能、高性能、かつオープンソースのリレーショナルデータベース管理システム（RDBMS）

 INGRES('70)、POSTGRES('80) 由来の歴史
 利用、複製、修正、再配布可能なライセンス 特定オーナー企業が無い
 比較的組織だった開発体制

企業

企業

ある種のOSS開発体制
企業

PostgreSQL
製品

企業
開発者
PostgreSQL開発体制
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

3

PostgreSQLとは 安定的で管理されたリリース
 機能面で着実に商用製品にキャッチアップ
2019.10
12が登場！

PostgreSQL各バージョンの行数とリリース日、主な追加機能
2011.92012.92018.102016.92016.12017.102014.122013.92010.92008.2 2009.7
2006.122005.1 2005.11

BitmapScan

PITR

hot (fast)
UPDATE

4core
scale

many
core
scale

Replication

OLAP,
CTE

SSI,
FDW

JSONB

Mview,UView

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

Parallel

RLS,UPSERT

JIT
compilelogicalRepli.

Table
AM I/F

4

PostgreSQLの特徴
 機能面

 性能面
 多数のCPUコアによる読み書き性能スケール（単純ベンチマーク条件）
 パラレルクエリに対応
 JITに対応
 更新でWALボトルネック有 運用機能 物理バックアップ・リカバリ
 論理バックアップ・リストア
 詳細なログ設定
 バキューム （自動化、進捗表示など改善はある）

 最新のSQL標準機能のほとんどをサポート
 JSON対応での優越
 設定が簡便なパーティションテーブル ヒント句 クラスタ構成

物理レプリケーション(directory）
論理レプリケーション(table)
参照負荷分散／ホットスタンバイ
HAクラスタ（Pacemaker, Pgpool-II) 共有ストレージを用いたマルチマスタ構成（いわゆるRAC型）

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

5

PostgreSQLの最新情報
 PostgreSQL 12 について
 2019/10/3 にリリース

 性能改善 インデックス
 パーティション

 新機能
 テーブルアクセスメソッド（≒ストレージエンジン）
 ページチェックサムに関する機能追加
 その他

 以前バージョンとの非互換箇所
 recovery.conf の廃止
 行ごとに振られるオブジェクトID廃止

現在PostgreSQLを使っている方は注意

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

6

性能改善の例
 インデックス
インデックス作成時の W AL 出力量

重複値を多く持つ Btree インデックスのサイズ
3,500

約20％縮小3,000

14,00012,00010,000

2,500
2,000
kB

16,000v11v12

8,000

1,500

6,000

1,000

4,000

500

2,000
00v11

GIN

v12

GiST

SP-GiSTkB （ GIN については 0.1kB ） パーティション
多パーティションに COPY データ投入

一部パーティションのみ参照する SQL
200.003,000

150.002,000

100.00

msms

4,000

1,000

50.00

0v11

v120.00

v11

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

v127

（新機能）テーブルアクセスメソッド
 テーブルアクセスメソッド(Table AM) アクセスメソッドとはデータの内部構造とそのデータに対する処理実装を定義したもの PostgreSQL は従来からインデックスに関するアクセスメソッドが複数存在(BTree, GIN, BRIN, etc..)し、任意に追加、選択可能だった
 12からはテーブルに関するアクセスメソッドが利用可能になった テーブル毎にAM指定できるので、ユースケースに合わせて柔軟なデータベース設計が可能

 ただし、今のところインタフェースのみ
 従来の形式をテーブルアクセスメソッド化した “heap” のみ

 開発されている実装
UNDOログを使ってVACUUMレスを実現 zheap:
 zedstore: 列指向格納でOLAP最適化を実現
今後標準になる可能性も？
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

8

（新機能）ページチェックサムに関する機能追加 （これまでの）ページチェックサム機能とは9.3～

 ページアクセス時にデータ破壊を検出できる（チェックサム無しの場合、黙ってデータが変わったり、構造的に不正な場合だけエラーが出たりする）
 データベースクラスタ作成（initdb）時にオプションでチェックサム付加
 チェックサムの全体確認も可能 11
 ただし、サービス停止中のみ

 12 で pg_checksums コマンド追加
 新規作成することなくデータベースクラスタに後からチェックサムを有効化、無効化が可能
 チェックサム全体確認用コマンド pg_verify_checksums がpg_checksums に統合

 12リリースの後、pg_checksums 1.0 が10/23に単独リリース
 サービス稼働中にチェックサム全体確認が可能に
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

9

（新機能）その他
 先の例はほんの一例
 PostgreSQL 12 で実装された機能はその他に
 JSON path
 生成列（式を使って計算される列）
 大文字小文字を区別しない比較
 インデックスに関する機能追加
 MCV拡張統計情報
 認証処理の拡充
 等々......
詳しくは SRAOSS の技術情報ページをご覧ください
新機能解説や性能検証結果を公開しています
SRAOSS PostgreSQL12

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

10

Pgpool-IIとは Pgpool-II はアプリケーションとPostgreSQLサーバ間で動作するミドルウェア
 SRA OSS 主導で開発
PostgreSQL標準機能
 機能





コネクションプーリング
クエリキャッシュ
ロードバランシング
高可用性クラスタ 自動フェイルオーバ
 自動縮退 オンラインリカバリ等

アプリケーション

PostgreSQL
サーバ

Pgpool-II の基本的な構成例Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

11

Pgpool-IIの最新情報
 Pgpool-II 4.1 について
 2019/10/31 にリリース
 3.4 系がEOLとなりました 性能改善 パース処理削減
 大規模な更新クエリ性能の改善
 単純なケースで3倍早くなった。Pgpool-IIのオーバヘッド極小化

 新機能
 ステートメントレベルロードバランシング
 自動フェイルバック
 PostgreSQL 12 対応

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

12

（新機能）ステートメントレベルロードバランシング
 以前のバージョンまでは
 ロードバランスノードがセッション開始時に決定される
 ロードバランスノードはセッションが終了するまで変更されない コネクションプーリングを使用している場合、ロードバランスノードがいつまでも変更されないケースがあり得る

 【4.1】ステートメントレベルロードバランシング ステートメント（≒クエリ）単位でロードバランスノードを決定可能に パラメータ追加 statement_level_load_balance = on ステートメントレベルロードバランシングを有効にするかどうか

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

13

（新機能）自動フェイルバック
 以前のバージョンまでは
 一時的なネットワーク障害などで、スタンバイノードがPgpool-IIに一度ダウン判定されてるとレプリケーション状態が正常に動作していてもPgpool-IIの管理ノードとして復帰しなかった
 復帰しないとロードバランスされない 復帰させるには手動でフェイルバックするかPgpool-IIサービスを再起動する必要があった 【4.1】自動フェイルバック
 レプリケーション状態が正常なノードを自動で復帰可能に PostgreSQL 9.6 以上である必要 パラメータ追加
 auto_failback (デフォルト：off) 自動フェイルバックを有効にするかどうか auto_failback_interval (デフォルト:60)
 自動フェイルバックを実行する最小時間間隔[秒]Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

14おわりにPostgreSQL も Pgpool-II も常に進化を続けています PostgreSQL は 毎年大きな新機能が導入されています
最近5年間のバージョンのキーワードは......


論理レプリケーション
パラレルクエリ
宣言的パーティショニング
JITコンパイル 特に今回導入されたテーブルアクセスメソッドは、今後適用可能なユースケースが大きく広がる可能性を秘めています Vaccumレス、列指向、透過的暗号化、etc.

 Pgpool-II は PostgreSQLに追従した安定のリリースと独自の機能追加
 今後はよりユーザフレンドリーに
 設定の簡便化
 ユーザマニュアルの充実
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

15

ご清聴ありがとうございました
オープンソースとともにURL： http://www.sraoss.co.jp/E-mail： sales@sraoss.co.jp
Tel： 03-5979-2701
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

16