SlideShare a Scribd company logo
Copyright©2016 NTT corp. All Rights Reserved.
祝リリース!PostgreSQL 9.6新機能紹介!
~長年待ち望まれてきた機能から、NTTデータ、NTTOSSセン
タがホンキで開発貢献した機能までトコトン解説~
日本電信電話株式会社
NTTオープンソースソフトウェアセンタ
澤田 雅彦
@NTTデータオープンソースDAY 2016 (11/16)
2Copyright©2016 NTT corp. All Rights Reserved.
1. PostgreSQLについて簡単に紹介
2. PostgreSQL9.6新機能紹介
3. 今後のPostgreSQL
4. まとめ
目次
3Copyright©2016 NTT corp. All Rights Reserved.
• PostgreSQL Global Development Groupが主体となり開発
• 1994年にSQLをサポートし、1996年にPostgreSQLに名前
を変えた
• 今年20周年
• 最新バージョンは9.6.1 (10/27リリース)
• 同時に9.1系がEOL
PostgreSQLとは?
4Copyright©2016 NTT corp. All Rights Reserved.
• Uberの記事 (7月26日)
• “Why Uber Engineering Switched from Postgres to MySQL”
• 初PGConf.ASIA 2016開催予定 (12月1,2,3日@秋葉原)
• アジアを横断したPostgreSQLの国際カンファレンス
• 第二回PgDay Asia 2017開催予定(2017年3月@シンガポール)
• アジアを横断したPostgreSQLの国際カンファレンス
最近話題になっているPostgreSQL
5Copyright©2016 NTT corp. All Rights Reserved.
PostgreSQL 9.6新機能紹介
6Copyright©2016 NTT corp. All Rights Reserved.
2011
2012
2013
PostgreSQLは、年1回のメジャーバージョンアップをし
ています。
PostgreSQLのこれまで
9.1 (2011-09)
・同期レプリケーション
9.2 (2012-09)
・大幅な性能向上
9.3 (2013-09)
・マテリアライズドビューの実装
・更新可能ビューの実装
・フェイルオーバ時間の大幅な短縮
・DDLトリガの実装
2014
9.4(2014-12)
・更新ログの書き出し性能向上
・マテリアライズドビューの改善
・遅延レプリケーションの実装
・ロジカルデコーディングの実装
2015
9.6(2016-9)
・パラレルクエリ
・VACUUM性能向上
・マルチ同期レプリケーション
・FDW強化
本日ご紹介部分
2016
9.5(2016-1)
・UPSERTの実装
・BRINの実装
・Row-Level Securityの実装
・pg_rewindのコア機能化
・同時実行性の改善
7Copyright©2016 NTT corp. All Rights Reserved.
主要機能を解説します
性能向上
• パラレルクエリ
VACUUMの性能、運用性向上
• Freeze Map
• VACUUM進捗
レプリケーション
• マルチ同期レプリケーション
外部データ連携(FDW)
• FDW強化
8Copyright©2016 NTT corp. All Rights Reserved.
パラレルクエリ
(Robert Haas, Amit Kapila, David Rowley, many others)
“Parallelism” by Maciej Meller
9Copyright©2016 NTT corp. All Rights Reserved.
多くのユーザが待ち望んでいた機能の一つ
https://postgresql.uservoice.com/forums/21853-general
10Copyright©2016 NTT corp. All Rights Reserved.
CPU
パラレルクエリってどんな機能? -これまでのPG -
サーバプロセス
巨大なテーブル
SELECT *
FROM tbl;
• 1つのSQLを1つのプロセスでしか処理できない
• 巨大なテーブルを扱うと、処理に時間がかかってしまう
• 特に集計、結合処理を行うと1プロセスにかかる負担は増大する
スキャン
11Copyright©2016 NTT corp. All Rights Reserved.
CPU
CPU
CPU
サーバプロセス
パラレルクエリってどんな機能?
巨大なテーブル
SELECT *
FROM tbl;
サーバプロセス
サーバプロセス
スキャン
スキャン
スキャン
連携
連携
• 1つのSQLを複数のプロセスで分担して処理できる
• 1つのSQL処理速度が向上する
• CPUリソースを効率的に使うことができる
• パラレルクエリはシーケンシャルスキャン、結合処理、集計処理で有効
12Copyright©2016 NTT corp. All Rights Reserved.
パラレルクエリ実現には以下の機能が必要
① 実際に処理を行うプロセスを制御する機能
② プロセス間のコミュニケーション領域を作る機能
③ 並列処理中は一貫した情報を見えるようにする機能
④ 並列結果をまとめる機能
⑤ 並列処理を意識した実行計画を立てる
PostgreSQLコミュニティが長年準備してきた機能の一つ
PG9.3
(2013)
PG9.4
(2014)
① ワーカープロセスを
動的に起動可能
② 共有メモリを動的
に確保可能
③ ワーカープロセス
で一貫した情報
がみれる機能
④ 並列処理結果をまと
める機能
⑤ 並列処理を意識した
実行計画を立てる
① 独自のワーカー
プロセスが定義、
起動可能
完成
PG9.5
(2015)
PG9.6
(2016)
13Copyright©2016 NTT corp. All Rights Reserved.
9.6でパラレル(並列)処理できるのは、
検索と集計と結合
何がパラレルになる?
Seq Scan Nested Loop Join
Hash Join
avg()
min()
max()
count()
など
14Copyright©2016 NTT corp. All Rights Reserved.
これまでの集計処理
集計
(Agg)
集計
結果
テーブルスキャン
(SeqScan)
テーブル
=# SELECT count(*) FROM test_table;
1プロセスで
スキャン、集計を
実施
15Copyright©2016 NTT corp. All Rights Reserved.
集計処理の並列化
部分集計
(Partial Agg)
部分集計
(Partial Agg)
部分集計
(Partial Agg)
集める
(Gather)
集計
結果
集計
結果
集計
結果
集計
結果
テーブルスキャン
(Partial SeqScan)
テーブルスキャン
(Partial SeqScan)
テーブルスキャン
(Partial SeqScan)
集計
結果
集計
結果
テーブル
集計
結果
• テーブルスキャン、集計を並列で実行可能
• 各プロセスで部分的な集計を行い、最後に結果をまとめる
行数/3
行数/3
行数/3
最終集計
(Final Agg)
16Copyright©2016 NTT corp. All Rights Reserved.
これまでの結合処理
結合
(Nested Loop Join)
テーブルスキャン
(Partial SeqScan)
インデックススキャン
(IndexScan)
内部表
外部表
=# SELECT id FROM hoge h, bar b WHERE h.id = b.id;
17Copyright©2016 NTT corp. All Rights Reserved.
結合処理の並列化
結合
(Nested Loop Join)
テーブルスキャン
(Partial SeqScan)
インデックススキャン
(IndexScan)
結合
(Nested Loop Join)
テーブルスキャン
(Partial SeqScan)
インデックススキャン
(IndexScan)
内部表 内部表
結果をまとめる
(Gather)
外部表
• 各プロセスで外部表のスキャン、内部表との結合を実施
• Hash Joinも並列実行可能
行数/2
行数/2
18Copyright©2016 NTT corp. All Rights Reserved.
• クエリ実行の並列度を変えて全件スキャンを実施
• CPUコア数分(並列度4)までクエリが高速化した
どれくらい速くなる?
0
5
10
15
20
25
1 2 3 4 5
実行時間(秒)
並列度
13GBテーブルの全件スキャン
CPU:4コア
メモリ:32GB
約1/4の
実行時間
19Copyright©2016 NTT corp. All Rights Reserved.
• 並列度決定に物理CPU数は考慮されない
• テーブルサイズを元に並列度を算出
• CPUコア数以上の並列度が設定されないように
• ディスクI/Oに気を使おう!
使用上の注意点
20Copyright©2016 NTT corp. All Rights Reserved.
• 1つのSQL処理を複数のCPUで並列に実行
• 1つのSQL処理速度を上げる機能
• Seq Scan、Nested Loop Join、Hash Join、集計が対応
• 更新、削除、ソート、Merge Join、Index Scanは未対応
• 「並列に処理する実行計画」も含み、最適な実行計画が選択
される
• “パラレルクエリを使った方が遅い”と判断されることも
• 並列度はテーブルサイズを元に設定される
絶賛機能、性能検証中!
詳しい情報は随時発信していきます!
パラレルクエリ まとめ
21Copyright©2016 NTT corp. All Rights Reserved.
PostgreSQLが管理するトランザクションIDのメンテナン
スのために、定期的(デフォルトでは2億トランザクショ
ン毎)にデータベース全体のVACUUMが実行されます。
9.5までのPostgreSQL
いつも通りの処理♪
急にDB全体が
重くなった!
半年後の
ある日
22Copyright©2016 NTT corp. All Rights Reserved.
=# SELECT pid, state,
now() – query_start as duration, query
FROM pg_stat_activity;
-[ RECORD 1 ]---------------------------------------
pid | 43556
query | autovacuum: VACUUM
| public.very_large_table (to prevent
| wraparound)
state | active
duration | 5 days 18:50:44.256561
②
5日間以上
VACUUM
実行中
PostgreSQLで実行されているSQLの状況を見てみると・・・
①
“to prevent wraparound”
が付いている
23Copyright©2016 NTT corp. All Rights Reserved.
Freeze Map
(Masahiko Sawada, Robert Haas)
The Unsung Founders Memorial at UNC. It's an interesting table sculpture dedicated
to the men and women of color who helped build the University. by Jed Record
24Copyright©2016 NTT corp. All Rights Reserved.
非常に重要な機能
(でも内部の細かい話になるので、その重要さが伝わりづらい。。)
Freeze Mapとは?
25Copyright©2016 NTT corp. All Rights Reserved.
内部構造に興味がある方は
http://www.slideshare.net/pgdayasia/introduction-to-vacuum-freezing-and-xid
26Copyright©2016 NTT corp. All Rights Reserved.
このVACUUM(通称XID周回防止VACUUM)では全テーブルを問答
無用でフルスキャン
• ディスクI/OやCPUを消費
• DBサイズに比例してより大きい影響を受けやすくなる
XID周回防止VACUUMがいつ発生するかはPostgreSQL次第
• 繁忙期、閑散期関係なく実行される
• ただし、事前に意識的にメンテナンスしておくことで、ある程度制御す
ることは可能
キャンセルできるが、実行しないままでいると、PostgreSQLがあ
る日突然停止する
Q. なぜ今になって解決されたのか?(これまで問題にならなかったのか?)
A. 近年DBに格納するデータが大きくなってきたことにより、問題
が顕在化してきたため。
甘く見ていると危険
27Copyright©2016 NTT corp. All Rights Reserved.
• これらの悩みを解消
• デフォルトで有効
• オーバーヘッドを極力少なくなるように実装しているため、新
機能導入によるデメリットはほぼない
• OFFにできない
• DBMSの重要な部分を改変したため、万が一のときの対
処策も一緒に追加
• pg_visibilityモジュール
• pg_truncate_visibility_map
• pg_check_visible, pg_check_frozen
• VACUUM (DISABLE_PAGE_SKIPPING)
Freeze Map
28Copyright©2016 NTT corp. All Rights Reserved.
=# SELECT pid, state,
now() – query_start as duration, query
FROM pg_stat_activity;
-[ RECORD 1 ]---------------------------------------
pid | 43556
query | autovacuum: VACUUM
| public.very_large_table (to prevent
| wraparound)
state | active
duration | 5 days 18:50:44.256561
②
5日間以上
VACUUM
実行中
PostgreSQLで実行されているSQLの状況を見てみると・・・
①
“to prevent wraparound”
が付いている
29Copyright©2016 NTT corp. All Rights Reserved.
Vacuum Progress Checker
(Amit Langote, Robert Haas, Vinayak Pokale, Rahila Syed)
30Copyright©2016 NTT corp. All Rights Reserved.
• VACUUMの進捗状況をレポートするビューが導入
• どのテーブルのVACUUMが、どれくらい進んでいるのかを数値でレ
ポート
VACUUMの進捗状況が見える
=# ¥d pg_stat_progress_vacuum
Column | Type | Modifiers
-------------------+---------+----------
pid | integer |
datid | oid |
datname | name |
relid | oid |
phase | text |
heap_blks_total | bigint |
heap_blks_scanned | bigint |
heap_blks_vacuumed | bigint |
index_vacuum_count | bigint |
max_dead_tuples | bigint |
num_dead_tuples | bigint |
31Copyright©2016 NTT corp. All Rights Reserved.
=# SELECT pid, datname, relname,
((heap_blks_scanned / heap_blks_total::numeric(10,2)) *
100)::numeric(10,2) as percentage,
p.phase,
index_vacuum_count
FROM pg_stat_progress_vacuum as p, pg_class as c
WHERE p.relid = c.oid;
-[ RECORD 1 ]------+-----------------
pid | 100026
datname | postgres
relname | pgbench_accounts
percentage | 19.72
phase | scanning heap
index_vacuum_count | 10
-[ RECORD 2 ]------+-----------------
pid | 100027
datname | postgres
relname | very_large_table
percentage | 95.12
phase | scanning heap
index_vacuum_count | 300
進捗状況の確認やチューニングにも使える
他ビューと組み合わせることで、
・VACUUM対象のテーブル
・進捗状況(パーセンテージ)
・今何をしているか
・VACUUMの効率
など算出可能
32Copyright©2016 NTT corp. All Rights Reserved.
主要機能を解説します
性能向上
• パラレルクエリ
VACUUMの性能、運用性向上
• Freeze Map
• VACUUM進捗
レプリケーション
• マルチ同期レプリケーション
外部データ連携(FDW)
• FDW強化
33Copyright©2016 NTT corp. All Rights Reserved.
レプリケーション機能の歴史
9.0
(2010)
9.4
(2014)
9.5
(2015)
9.6
(2016)
9.2
(2012)
9.3
(2013)
9.1
(2011)
・同期
レプリケーション
・カスケード
レプリケーション
・スタンバイサーバへ
の高速切り替え
・レプリケーションスロット
・ロジカルデコーディング
・高速フェイル
オーバー
M S S
M S
S
レプリケーション機能の拡充、使いやすさの向上
・非同期
レプリケーション
34Copyright©2016 NTT corp. All Rights Reserved.
マルチ同期レプリケーション
(Masahiko Sawada, Beena Emerson, Michael Paquier,
Fujii Masao, Kyotaro Horiguchi)
Polska > Kraków by antifluor
35Copyright©2016 NTT corp. All Rights Reserved.
同期レプリケーション
http://www.slideshare.net/hadoopxnttdata/postgresql-39739357
36Copyright©2016 NTT corp. All Rights Reserved.
PG9.5 までのレプリケーション
マスタ
スタンバイ
A
スタンバイ
B
スタンバイ
C
同期
レプリケーション
非同期
レプリケーション
非同期
レプリケーション
• マスタサーバは複数のスタンバイサーバを持つことができるが、同期レプリケーションを使用
できるのは最大1台まで
同期レプリケーションを
使えるのはスタンバイAの1台のみ
37Copyright©2016 NTT corp. All Rights Reserved.
マルチ同期レプリケーション
マスタ
スタンバイ
A
スタンバイ
B
スタンバイ
C
同期
レプリケーション
同期
レプリケーション
非同期
レプリケーション
• 複数のスタンバイサーバに対して同期レプリケーションを使用可能
• より高可用な構成を組むことが可能に
スタンバイAとスタンバイBに
同期レプリケーションを使用
38Copyright©2016 NTT corp. All Rights Reserved.
構成例
マスタ
● 同期レプリケーションを使用したWAL二重書き込み(pg_receivexlog使用)
WAL
WAL
のみ
スタンバイ
同期
レプリケーション
同期
レプリケーション
● 同一DC内に同期スタンバイを複数配置
マスタ
スタンバイ
スタンバイ
同期
レプリケーション
同期
レプリケーション
39Copyright©2016 NTT corp. All Rights Reserved.
Foreign Data Wrapper(FDW)強化
(Etsuro Fujita, Shigeru Hanada, Ashutosh Bapat)
pot shards by psyberartist
40Copyright©2016 NTT corp. All Rights Reserved.
新機能紹介の前に - Foreign Data Wrapper(FDW)とは?
ID, COL
100, 北海道
200, 青森県
id col
100 北海道
200 青森県
id col
100 北海道
200 青森県
PostgreSQL
Oracle
CSVファイル
oracle_fdw
file_fdw
SELECT id, col
FROM tbl
外部データをあたかもPostgreSQLのデータとして扱える機能
41Copyright©2016 NTT corp. All Rights Reserved.
• postgres_fdwを使った分散処理構成は、「どれだけ外部サーバで処理させ
るか」が重要
• 親サーバが全てのデータを取得して計算、では外部サーバを使うメリットを生かせな
い
• 演算子、条件句も一緒に送る(Push Downする)ことが大切
分散処理基盤を続々と強化中
SELECT price
FROM 3月分
WHERE genre = …
1,2月分
postgres_fdw
子サーバ
3,4月分 5,6月分
SELECT …
WHERE …
親サーバ
42Copyright©2016 NTT corp. All Rights Reserved.
• 参照
• スキャンやWHERE句により絞込み外部サーバで実行される
• New!! 結合、ソート処理も外部サーバのリソースが使える
• 更新
• New!! 更新、削除を外部サーバに依頼可能
挿入、集計、他の結合等は現在開発中!
分散処理基盤を続々と強化中
43Copyright©2016 NTT corp. All Rights Reserved.
今後のPostgreSQL
Future Energy by Floris Oosterveld
44Copyright©2016 NTT corp. All Rights Reserved.
• PostgreSQL開発に注力している会社が、PostgreSQL開発
のロードマップを公開
• パラレルクエリ導入が、PostgreSQLの様々な処理のパラレル化
を加速
• ロジカルレプリケーションを含め、様々なレプリケーション機
能が追加されていく
• 外部データ連携機能(FDW)がさらに強化されていく
• パーティショニング専用の構文が導入され、簡単に使えるよう
になる
https://wiki.postgresql.org/wiki/PostgreSQL10_Roadmap
• PostgreSQLのバージョニングが変わる
今後のPostgreSQL
45Copyright©2016 NTT corp. All Rights Reserved.
バージョニングが変わります!
~PG9.6 PG10~
9.6.0
9.5.0
メジャー マイナー
9.5.1 11.0
10.0
メジャー マイナー
10.1
46Copyright©2016 NTT corp. All Rights Reserved.
• 本日はPG9.6の目玉機能を紹介しました
• PostgreSQL 9.6でパラレルクエリを初めとした200以上の
機能が追加されました
• NTTデータ、NTT OSSセンタが開発貢献した機能も多数
• 大規模データの管理、処理がH/Wリソースを効率的に使
いながら可能になった
• 今後のPostgreSQLはパラレル化、レプリケーション強化
にも期待
まとめ
47Copyright©2016 NTT corp. All Rights Reserved.
ご清聴ありがとうございました
48Copyright©2016 NTT corp. All Rights Reserved.
• Too old snapshot
• Idle_in_transaction_session_timeout
• CREATE ACCESS METHOD
• Generic WAL Interface
• Bloomインデックス
• 類似度検索の強化(Word Similarity Search)
• 待機イベント
• postgres_fdwで演算子をPush Down可能に
• 部分インデックスを使用した、Index Only Scan
(参考) その他の改善

More Related Content

What's hot (20)

PDF
Vacuum徹底解説
Masahiko Sawada
 
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PDF
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PDF
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
PDF
PostgreSQLでスケールアウト
Masahiko Sawada
 
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
PDF
明日から使えるPostgre sql運用管理テクニック(監視編)
kasaharatt
 
PDF
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
PPTX
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
 
PDF
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
PDF
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PPTX
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
使いこなそうGUC
Akio Ishida
 
Vacuum徹底解説
Masahiko Sawada
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
PostgreSQLでスケールアウト
Masahiko Sawada
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
明日から使えるPostgre sql運用管理テクニック(監視編)
kasaharatt
 
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
使いこなそうGUC
Akio Ishida
 

Similar to PostgreSQL 9.6 新機能紹介 (20)

PDF
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
PDF
ISUCON夏期講習2015_2 実践編
SATOSHI TAGOMORI
 
PDF
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
Insight Technology, Inc.
 
PDF
FPGAによる大規模データ処理の高速化
Kazunori Sato
 
PPTX
Prometech Particleworks on Rescale
Rescale Japan株式会社
 
PDF
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
Insight Technology, Inc.
 
PDF
楽天のプライベートクラウドを支えるフラッシュストレージ
Rakuten Group, Inc.
 
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PDF
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
NTT DATA OSS Professional Services
 
PDF
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Takuya Iwatsuka
 
PDF
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
 
PDF
Gmo media.inc 第9回西日本ossの普及を考える会
Dai Utsui
 
PDF
Sparkパフォーマンス検証
BrainPad Inc.
 
PPTX
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
 
PDF
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
 
PDF
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
PDF
実践!DBベンチマークツールの使い方
Fujishiro Takuya
 
PDF
pg_bigmを用いた全文検索のしくみ(前編)
NTT DATA OSS Professional Services
 
PDF
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例 by 株式会社日立製作所 ...
Insight Technology, Inc.
 
PDF
MySQL Technology Cafe No3
DAISUKE INAGAKI
 
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
ISUCON夏期講習2015_2 実践編
SATOSHI TAGOMORI
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
Insight Technology, Inc.
 
FPGAによる大規模データ処理の高速化
Kazunori Sato
 
Prometech Particleworks on Rescale
Rescale Japan株式会社
 
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
Insight Technology, Inc.
 
楽天のプライベートクラウドを支えるフラッシュストレージ
Rakuten Group, Inc.
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
NTT DATA OSS Professional Services
 
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Takuya Iwatsuka
 
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
 
Gmo media.inc 第9回西日本ossの普及を考える会
Dai Utsui
 
Sparkパフォーマンス検証
BrainPad Inc.
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
実践!DBベンチマークツールの使い方
Fujishiro Takuya
 
pg_bigmを用いた全文検索のしくみ(前編)
NTT DATA OSS Professional Services
 
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例 by 株式会社日立製作所 ...
Insight Technology, Inc.
 
MySQL Technology Cafe No3
DAISUKE INAGAKI
 
Ad

More from Masahiko Sawada (20)

PDF
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PDF
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
PDF
Transparent Data Encryption in PostgreSQL
Masahiko Sawada
 
PDF
PostgreSQL 12の話
Masahiko Sawada
 
PDF
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
Masahiko Sawada
 
PDF
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Masahiko Sawada
 
PDF
Bloat and Fragmentation in PostgreSQL
Masahiko Sawada
 
PDF
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Masahiko Sawada
 
PDF
Vacuum more efficient than ever
Masahiko Sawada
 
PDF
Vacuumとzheap
Masahiko Sawada
 
PDF
Parallel Vacuum
Masahiko Sawada
 
PDF
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
Masahiko Sawada
 
PDF
PostgreSQL10徹底解説
Masahiko Sawada
 
PDF
FDW-based Sharding Update and Future
Masahiko Sawada
 
PDF
What’s new in 9.6, by PostgreSQL contributor
Masahiko Sawada
 
PDF
pg_bigmと類似度検索
Masahiko Sawada
 
PDF
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
 
PDF
Introduction VAUUM, Freezing, XID wraparound
Masahiko Sawada
 
PDF
XID周回問題に潜む別の問題
Masahiko Sawada
 
PPTX
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
 
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL
Masahiko Sawada
 
PostgreSQL 12の話
Masahiko Sawada
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Masahiko Sawada
 
Bloat and Fragmentation in PostgreSQL
Masahiko Sawada
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Masahiko Sawada
 
Vacuum more efficient than ever
Masahiko Sawada
 
Vacuumとzheap
Masahiko Sawada
 
Parallel Vacuum
Masahiko Sawada
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
Masahiko Sawada
 
PostgreSQL10徹底解説
Masahiko Sawada
 
FDW-based Sharding Update and Future
Masahiko Sawada
 
What’s new in 9.6, by PostgreSQL contributor
Masahiko Sawada
 
pg_bigmと類似度検索
Masahiko Sawada
 
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
 
Introduction VAUUM, Freezing, XID wraparound
Masahiko Sawada
 
XID周回問題に潜む別の問題
Masahiko Sawada
 
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
 
Ad

PostgreSQL 9.6 新機能紹介

  • 1. Copyright©2016 NTT corp. All Rights Reserved. 祝リリース!PostgreSQL 9.6新機能紹介! ~長年待ち望まれてきた機能から、NTTデータ、NTTOSSセン タがホンキで開発貢献した機能までトコトン解説~ 日本電信電話株式会社 NTTオープンソースソフトウェアセンタ 澤田 雅彦 @NTTデータオープンソースDAY 2016 (11/16)
  • 2. 2Copyright©2016 NTT corp. All Rights Reserved. 1. PostgreSQLについて簡単に紹介 2. PostgreSQL9.6新機能紹介 3. 今後のPostgreSQL 4. まとめ 目次
  • 3. 3Copyright©2016 NTT corp. All Rights Reserved. • PostgreSQL Global Development Groupが主体となり開発 • 1994年にSQLをサポートし、1996年にPostgreSQLに名前 を変えた • 今年20周年 • 最新バージョンは9.6.1 (10/27リリース) • 同時に9.1系がEOL PostgreSQLとは?
  • 4. 4Copyright©2016 NTT corp. All Rights Reserved. • Uberの記事 (7月26日) • “Why Uber Engineering Switched from Postgres to MySQL” • 初PGConf.ASIA 2016開催予定 (12月1,2,3日@秋葉原) • アジアを横断したPostgreSQLの国際カンファレンス • 第二回PgDay Asia 2017開催予定(2017年3月@シンガポール) • アジアを横断したPostgreSQLの国際カンファレンス 最近話題になっているPostgreSQL
  • 5. 5Copyright©2016 NTT corp. All Rights Reserved. PostgreSQL 9.6新機能紹介
  • 6. 6Copyright©2016 NTT corp. All Rights Reserved. 2011 2012 2013 PostgreSQLは、年1回のメジャーバージョンアップをし ています。 PostgreSQLのこれまで 9.1 (2011-09) ・同期レプリケーション 9.2 (2012-09) ・大幅な性能向上 9.3 (2013-09) ・マテリアライズドビューの実装 ・更新可能ビューの実装 ・フェイルオーバ時間の大幅な短縮 ・DDLトリガの実装 2014 9.4(2014-12) ・更新ログの書き出し性能向上 ・マテリアライズドビューの改善 ・遅延レプリケーションの実装 ・ロジカルデコーディングの実装 2015 9.6(2016-9) ・パラレルクエリ ・VACUUM性能向上 ・マルチ同期レプリケーション ・FDW強化 本日ご紹介部分 2016 9.5(2016-1) ・UPSERTの実装 ・BRINの実装 ・Row-Level Securityの実装 ・pg_rewindのコア機能化 ・同時実行性の改善
  • 7. 7Copyright©2016 NTT corp. All Rights Reserved. 主要機能を解説します 性能向上 • パラレルクエリ VACUUMの性能、運用性向上 • Freeze Map • VACUUM進捗 レプリケーション • マルチ同期レプリケーション 外部データ連携(FDW) • FDW強化
  • 8. 8Copyright©2016 NTT corp. All Rights Reserved. パラレルクエリ (Robert Haas, Amit Kapila, David Rowley, many others) “Parallelism” by Maciej Meller
  • 9. 9Copyright©2016 NTT corp. All Rights Reserved. 多くのユーザが待ち望んでいた機能の一つ https://postgresql.uservoice.com/forums/21853-general
  • 10. 10Copyright©2016 NTT corp. All Rights Reserved. CPU パラレルクエリってどんな機能? -これまでのPG - サーバプロセス 巨大なテーブル SELECT * FROM tbl; • 1つのSQLを1つのプロセスでしか処理できない • 巨大なテーブルを扱うと、処理に時間がかかってしまう • 特に集計、結合処理を行うと1プロセスにかかる負担は増大する スキャン
  • 11. 11Copyright©2016 NTT corp. All Rights Reserved. CPU CPU CPU サーバプロセス パラレルクエリってどんな機能? 巨大なテーブル SELECT * FROM tbl; サーバプロセス サーバプロセス スキャン スキャン スキャン 連携 連携 • 1つのSQLを複数のプロセスで分担して処理できる • 1つのSQL処理速度が向上する • CPUリソースを効率的に使うことができる • パラレルクエリはシーケンシャルスキャン、結合処理、集計処理で有効
  • 12. 12Copyright©2016 NTT corp. All Rights Reserved. パラレルクエリ実現には以下の機能が必要 ① 実際に処理を行うプロセスを制御する機能 ② プロセス間のコミュニケーション領域を作る機能 ③ 並列処理中は一貫した情報を見えるようにする機能 ④ 並列結果をまとめる機能 ⑤ 並列処理を意識した実行計画を立てる PostgreSQLコミュニティが長年準備してきた機能の一つ PG9.3 (2013) PG9.4 (2014) ① ワーカープロセスを 動的に起動可能 ② 共有メモリを動的 に確保可能 ③ ワーカープロセス で一貫した情報 がみれる機能 ④ 並列処理結果をまと める機能 ⑤ 並列処理を意識した 実行計画を立てる ① 独自のワーカー プロセスが定義、 起動可能 完成 PG9.5 (2015) PG9.6 (2016)
  • 13. 13Copyright©2016 NTT corp. All Rights Reserved. 9.6でパラレル(並列)処理できるのは、 検索と集計と結合 何がパラレルになる? Seq Scan Nested Loop Join Hash Join avg() min() max() count() など
  • 14. 14Copyright©2016 NTT corp. All Rights Reserved. これまでの集計処理 集計 (Agg) 集計 結果 テーブルスキャン (SeqScan) テーブル =# SELECT count(*) FROM test_table; 1プロセスで スキャン、集計を 実施
  • 15. 15Copyright©2016 NTT corp. All Rights Reserved. 集計処理の並列化 部分集計 (Partial Agg) 部分集計 (Partial Agg) 部分集計 (Partial Agg) 集める (Gather) 集計 結果 集計 結果 集計 結果 集計 結果 テーブルスキャン (Partial SeqScan) テーブルスキャン (Partial SeqScan) テーブルスキャン (Partial SeqScan) 集計 結果 集計 結果 テーブル 集計 結果 • テーブルスキャン、集計を並列で実行可能 • 各プロセスで部分的な集計を行い、最後に結果をまとめる 行数/3 行数/3 行数/3 最終集計 (Final Agg)
  • 16. 16Copyright©2016 NTT corp. All Rights Reserved. これまでの結合処理 結合 (Nested Loop Join) テーブルスキャン (Partial SeqScan) インデックススキャン (IndexScan) 内部表 外部表 =# SELECT id FROM hoge h, bar b WHERE h.id = b.id;
  • 17. 17Copyright©2016 NTT corp. All Rights Reserved. 結合処理の並列化 結合 (Nested Loop Join) テーブルスキャン (Partial SeqScan) インデックススキャン (IndexScan) 結合 (Nested Loop Join) テーブルスキャン (Partial SeqScan) インデックススキャン (IndexScan) 内部表 内部表 結果をまとめる (Gather) 外部表 • 各プロセスで外部表のスキャン、内部表との結合を実施 • Hash Joinも並列実行可能 行数/2 行数/2
  • 18. 18Copyright©2016 NTT corp. All Rights Reserved. • クエリ実行の並列度を変えて全件スキャンを実施 • CPUコア数分(並列度4)までクエリが高速化した どれくらい速くなる? 0 5 10 15 20 25 1 2 3 4 5 実行時間(秒) 並列度 13GBテーブルの全件スキャン CPU:4コア メモリ:32GB 約1/4の 実行時間
  • 19. 19Copyright©2016 NTT corp. All Rights Reserved. • 並列度決定に物理CPU数は考慮されない • テーブルサイズを元に並列度を算出 • CPUコア数以上の並列度が設定されないように • ディスクI/Oに気を使おう! 使用上の注意点
  • 20. 20Copyright©2016 NTT corp. All Rights Reserved. • 1つのSQL処理を複数のCPUで並列に実行 • 1つのSQL処理速度を上げる機能 • Seq Scan、Nested Loop Join、Hash Join、集計が対応 • 更新、削除、ソート、Merge Join、Index Scanは未対応 • 「並列に処理する実行計画」も含み、最適な実行計画が選択 される • “パラレルクエリを使った方が遅い”と判断されることも • 並列度はテーブルサイズを元に設定される 絶賛機能、性能検証中! 詳しい情報は随時発信していきます! パラレルクエリ まとめ
  • 21. 21Copyright©2016 NTT corp. All Rights Reserved. PostgreSQLが管理するトランザクションIDのメンテナン スのために、定期的(デフォルトでは2億トランザクショ ン毎)にデータベース全体のVACUUMが実行されます。 9.5までのPostgreSQL いつも通りの処理♪ 急にDB全体が 重くなった! 半年後の ある日
  • 22. 22Copyright©2016 NTT corp. All Rights Reserved. =# SELECT pid, state, now() – query_start as duration, query FROM pg_stat_activity; -[ RECORD 1 ]--------------------------------------- pid | 43556 query | autovacuum: VACUUM | public.very_large_table (to prevent | wraparound) state | active duration | 5 days 18:50:44.256561 ② 5日間以上 VACUUM 実行中 PostgreSQLで実行されているSQLの状況を見てみると・・・ ① “to prevent wraparound” が付いている
  • 23. 23Copyright©2016 NTT corp. All Rights Reserved. Freeze Map (Masahiko Sawada, Robert Haas) The Unsung Founders Memorial at UNC. It's an interesting table sculpture dedicated to the men and women of color who helped build the University. by Jed Record
  • 24. 24Copyright©2016 NTT corp. All Rights Reserved. 非常に重要な機能 (でも内部の細かい話になるので、その重要さが伝わりづらい。。) Freeze Mapとは?
  • 25. 25Copyright©2016 NTT corp. All Rights Reserved. 内部構造に興味がある方は http://www.slideshare.net/pgdayasia/introduction-to-vacuum-freezing-and-xid
  • 26. 26Copyright©2016 NTT corp. All Rights Reserved. このVACUUM(通称XID周回防止VACUUM)では全テーブルを問答 無用でフルスキャン • ディスクI/OやCPUを消費 • DBサイズに比例してより大きい影響を受けやすくなる XID周回防止VACUUMがいつ発生するかはPostgreSQL次第 • 繁忙期、閑散期関係なく実行される • ただし、事前に意識的にメンテナンスしておくことで、ある程度制御す ることは可能 キャンセルできるが、実行しないままでいると、PostgreSQLがあ る日突然停止する Q. なぜ今になって解決されたのか?(これまで問題にならなかったのか?) A. 近年DBに格納するデータが大きくなってきたことにより、問題 が顕在化してきたため。 甘く見ていると危険
  • 27. 27Copyright©2016 NTT corp. All Rights Reserved. • これらの悩みを解消 • デフォルトで有効 • オーバーヘッドを極力少なくなるように実装しているため、新 機能導入によるデメリットはほぼない • OFFにできない • DBMSの重要な部分を改変したため、万が一のときの対 処策も一緒に追加 • pg_visibilityモジュール • pg_truncate_visibility_map • pg_check_visible, pg_check_frozen • VACUUM (DISABLE_PAGE_SKIPPING) Freeze Map
  • 28. 28Copyright©2016 NTT corp. All Rights Reserved. =# SELECT pid, state, now() – query_start as duration, query FROM pg_stat_activity; -[ RECORD 1 ]--------------------------------------- pid | 43556 query | autovacuum: VACUUM | public.very_large_table (to prevent | wraparound) state | active duration | 5 days 18:50:44.256561 ② 5日間以上 VACUUM 実行中 PostgreSQLで実行されているSQLの状況を見てみると・・・ ① “to prevent wraparound” が付いている
  • 29. 29Copyright©2016 NTT corp. All Rights Reserved. Vacuum Progress Checker (Amit Langote, Robert Haas, Vinayak Pokale, Rahila Syed)
  • 30. 30Copyright©2016 NTT corp. All Rights Reserved. • VACUUMの進捗状況をレポートするビューが導入 • どのテーブルのVACUUMが、どれくらい進んでいるのかを数値でレ ポート VACUUMの進捗状況が見える =# ¥d pg_stat_progress_vacuum Column | Type | Modifiers -------------------+---------+---------- pid | integer | datid | oid | datname | name | relid | oid | phase | text | heap_blks_total | bigint | heap_blks_scanned | bigint | heap_blks_vacuumed | bigint | index_vacuum_count | bigint | max_dead_tuples | bigint | num_dead_tuples | bigint |
  • 31. 31Copyright©2016 NTT corp. All Rights Reserved. =# SELECT pid, datname, relname, ((heap_blks_scanned / heap_blks_total::numeric(10,2)) * 100)::numeric(10,2) as percentage, p.phase, index_vacuum_count FROM pg_stat_progress_vacuum as p, pg_class as c WHERE p.relid = c.oid; -[ RECORD 1 ]------+----------------- pid | 100026 datname | postgres relname | pgbench_accounts percentage | 19.72 phase | scanning heap index_vacuum_count | 10 -[ RECORD 2 ]------+----------------- pid | 100027 datname | postgres relname | very_large_table percentage | 95.12 phase | scanning heap index_vacuum_count | 300 進捗状況の確認やチューニングにも使える 他ビューと組み合わせることで、 ・VACUUM対象のテーブル ・進捗状況(パーセンテージ) ・今何をしているか ・VACUUMの効率 など算出可能
  • 32. 32Copyright©2016 NTT corp. All Rights Reserved. 主要機能を解説します 性能向上 • パラレルクエリ VACUUMの性能、運用性向上 • Freeze Map • VACUUM進捗 レプリケーション • マルチ同期レプリケーション 外部データ連携(FDW) • FDW強化
  • 33. 33Copyright©2016 NTT corp. All Rights Reserved. レプリケーション機能の歴史 9.0 (2010) 9.4 (2014) 9.5 (2015) 9.6 (2016) 9.2 (2012) 9.3 (2013) 9.1 (2011) ・同期 レプリケーション ・カスケード レプリケーション ・スタンバイサーバへ の高速切り替え ・レプリケーションスロット ・ロジカルデコーディング ・高速フェイル オーバー M S S M S S レプリケーション機能の拡充、使いやすさの向上 ・非同期 レプリケーション
  • 34. 34Copyright©2016 NTT corp. All Rights Reserved. マルチ同期レプリケーション (Masahiko Sawada, Beena Emerson, Michael Paquier, Fujii Masao, Kyotaro Horiguchi) Polska > Kraków by antifluor
  • 35. 35Copyright©2016 NTT corp. All Rights Reserved. 同期レプリケーション http://www.slideshare.net/hadoopxnttdata/postgresql-39739357
  • 36. 36Copyright©2016 NTT corp. All Rights Reserved. PG9.5 までのレプリケーション マスタ スタンバイ A スタンバイ B スタンバイ C 同期 レプリケーション 非同期 レプリケーション 非同期 レプリケーション • マスタサーバは複数のスタンバイサーバを持つことができるが、同期レプリケーションを使用 できるのは最大1台まで 同期レプリケーションを 使えるのはスタンバイAの1台のみ
  • 37. 37Copyright©2016 NTT corp. All Rights Reserved. マルチ同期レプリケーション マスタ スタンバイ A スタンバイ B スタンバイ C 同期 レプリケーション 同期 レプリケーション 非同期 レプリケーション • 複数のスタンバイサーバに対して同期レプリケーションを使用可能 • より高可用な構成を組むことが可能に スタンバイAとスタンバイBに 同期レプリケーションを使用
  • 38. 38Copyright©2016 NTT corp. All Rights Reserved. 構成例 マスタ ● 同期レプリケーションを使用したWAL二重書き込み(pg_receivexlog使用) WAL WAL のみ スタンバイ 同期 レプリケーション 同期 レプリケーション ● 同一DC内に同期スタンバイを複数配置 マスタ スタンバイ スタンバイ 同期 レプリケーション 同期 レプリケーション
  • 39. 39Copyright©2016 NTT corp. All Rights Reserved. Foreign Data Wrapper(FDW)強化 (Etsuro Fujita, Shigeru Hanada, Ashutosh Bapat) pot shards by psyberartist
  • 40. 40Copyright©2016 NTT corp. All Rights Reserved. 新機能紹介の前に - Foreign Data Wrapper(FDW)とは? ID, COL 100, 北海道 200, 青森県 id col 100 北海道 200 青森県 id col 100 北海道 200 青森県 PostgreSQL Oracle CSVファイル oracle_fdw file_fdw SELECT id, col FROM tbl 外部データをあたかもPostgreSQLのデータとして扱える機能
  • 41. 41Copyright©2016 NTT corp. All Rights Reserved. • postgres_fdwを使った分散処理構成は、「どれだけ外部サーバで処理させ るか」が重要 • 親サーバが全てのデータを取得して計算、では外部サーバを使うメリットを生かせな い • 演算子、条件句も一緒に送る(Push Downする)ことが大切 分散処理基盤を続々と強化中 SELECT price FROM 3月分 WHERE genre = … 1,2月分 postgres_fdw 子サーバ 3,4月分 5,6月分 SELECT … WHERE … 親サーバ
  • 42. 42Copyright©2016 NTT corp. All Rights Reserved. • 参照 • スキャンやWHERE句により絞込み外部サーバで実行される • New!! 結合、ソート処理も外部サーバのリソースが使える • 更新 • New!! 更新、削除を外部サーバに依頼可能 挿入、集計、他の結合等は現在開発中! 分散処理基盤を続々と強化中
  • 43. 43Copyright©2016 NTT corp. All Rights Reserved. 今後のPostgreSQL Future Energy by Floris Oosterveld
  • 44. 44Copyright©2016 NTT corp. All Rights Reserved. • PostgreSQL開発に注力している会社が、PostgreSQL開発 のロードマップを公開 • パラレルクエリ導入が、PostgreSQLの様々な処理のパラレル化 を加速 • ロジカルレプリケーションを含め、様々なレプリケーション機 能が追加されていく • 外部データ連携機能(FDW)がさらに強化されていく • パーティショニング専用の構文が導入され、簡単に使えるよう になる https://wiki.postgresql.org/wiki/PostgreSQL10_Roadmap • PostgreSQLのバージョニングが変わる 今後のPostgreSQL
  • 45. 45Copyright©2016 NTT corp. All Rights Reserved. バージョニングが変わります! ~PG9.6 PG10~ 9.6.0 9.5.0 メジャー マイナー 9.5.1 11.0 10.0 メジャー マイナー 10.1
  • 46. 46Copyright©2016 NTT corp. All Rights Reserved. • 本日はPG9.6の目玉機能を紹介しました • PostgreSQL 9.6でパラレルクエリを初めとした200以上の 機能が追加されました • NTTデータ、NTT OSSセンタが開発貢献した機能も多数 • 大規模データの管理、処理がH/Wリソースを効率的に使 いながら可能になった • 今後のPostgreSQLはパラレル化、レプリケーション強化 にも期待 まとめ
  • 47. 47Copyright©2016 NTT corp. All Rights Reserved. ご清聴ありがとうございました
  • 48. 48Copyright©2016 NTT corp. All Rights Reserved. • Too old snapshot • Idle_in_transaction_session_timeout • CREATE ACCESS METHOD • Generic WAL Interface • Bloomインデックス • 類似度検索の強化(Word Similarity Search) • 待機イベント • postgres_fdwで演算子をPush Down可能に • 部分インデックスを使用した、Index Only Scan (参考) その他の改善