SlideShare a Scribd company logo
1
Incoming PostgreSQL 9.4
2014-06-19
db tech showcase 大阪 2014
日本 PostgreSQL ユーザ会
関西支部支部長 宗近龍一郎
次バージョンの新機能をご紹介
2
はじめに
● 本セッションでは・・・
●
日本 PostgreSQL ユーザ会について
● PostgreSQL の現状について
● 今秋リリース予定の PostgreSQL 9.4 バージョンについ
てお話します
3
自己紹介
● 宗近 龍一郎 ( ムネチカ リュウイチロウ ) といいま
す
● 日本 PostgreSQL ユーザ会の関西支部の支部長
をしています
●
日本 PostgreSQL ユーザ会については後ほどご紹介を
します
● 大阪にある株式会社あすかという会社で取締役副
社長をしています
●
会場から歩いて 10 分ほど。扇町公園の近くに会社があ
ります
4
日本 PostgreSQL ユーザ会について
● PostgreSQL の普及促進を目的に活動する特定非
営利活動( NPO )法人です。
● 北は北海度から、南は沖縄まで 9 つの支部があ
り、それぞれの支部が特徴を出した活動をしていま
す
●
勉強会や OSC への出展/講演等
●
いくつかの分科会活動があり、ドキュメントの充実
や技術検証等を行っています
● しくみ分科会、文書・書籍関連分科会等
5
日本 PostgreSQL ユーザ会ウェブサイト
● https://www.postgresql.jp/
6
Let's Postgres
● http://lets.postgresql.jp/
7
PostgreSQL とは?
● 多機能、高性能な、オープンソースのリレーショナ
ルデータベースソフトウェア
● INGRES 後継で長い歴史
● BSD タイプのライセンス
●
オーナー企業が無い開発体制
企業
製品
よくある OSS 開発体制
開発者
PostgreSQL
企業
企業
企業
PostgreSQL 開発体制
○
8
PostgreSQL の軌跡
PG 7.0 PG 7.1 PG 7.2 PG 7.3 PG 7.4 PG 8.0 PG 8.1 PG 8.2 PG 8.3 PG 8.4 PG 9.0 PG 9.1 PG 9.2
0
20000
40000
60000
80000
100000
120000
PostgreSQL のコードサイズとリリース
コードサイズ(byte)
更新の
高速化ビットマップ
スキャンプリペアド
ステートメント
並列実行
VACUUM外部キー、
JOIN 構文
トランザク
ションログ
スキーマ
PITR 、
Windows
12 CPU
スケール
|
2001 年
4 月
|
2005 年
1 月
|
2009 年
7 月
|
2006 年
12 月
|
2002 年
11 月
ウィンドウ関数
再帰 SQL 64 CPU
スケール
|
2011 年
9 月
同期レプリケーション
外部テーブル
レプリケーション
Windows 64bit
コードサイズとリリース
1メジャーバージョンが
1年毎にリリース
9
今のバージョン 9.3 について
● OSC2013 沖縄で公演された藤井さんの資料がよく
まとまっています。
●
http://www.slideshare.net/hadoopxnttdata/postgre-sql93-24136770
● かいつまんで言うと以下の機能の実装
● マテリアライズビュー
● 更新可能ビュー
●
JSON の進化
●
FDW
10
もっと古いバージョン
● Postgres95 とか PostgreSQL6.5 というバージョンも
ありました
● 古いことなので忘れてしまっても良いです ^^;
11
9.4 拡張のサマリ (1)
● 性能向上&性能チューニング補助
●
GIN インデックスの性能向上
● バイナリ JSON データ型  (JSONB)
● 新しい SQL 構文
● 管理機能の拡張
● 拡張のための基盤機能
● 論理レプリケーションのための基盤
●
並列処理のための基盤
12
9.4 拡張のサマリ (2)
バイナリ JSON
+
高速 GIN
↓
NoSQL 製品に負けない
非リレーション対応
パラレルクエリ、
両方向レプリケーション、
を実現する布石となる機能
13
性能向上 (1)
● GIN インデックスの性能向上
●
配列、ハッシュ( hstore )、全文検索テキストなど、複数
要素を持つデータ型に対して「ある要素を持つもの」を
検索するときに使われるインデックス
●
サイズ縮小(2~10倍)、検索も高速化
key (整数
型)
tags (配列型)
100 'DBA' , 'SQL'
101 'SQL' , 'HACK'
102 'DBA'
103 'HACK'
GIN
'DBA' を
含むものは?
14
性能向上 (2)
● WAL 性能向上
●
PostgreSQL はデータ更新にあたり、必ず WAL ( Write
Ahead Log =トランザクションログ)をストレージに書き
出し、しばしば性能ボトルネックとなります
●
データ更新に対する WAL 出力量が軽減
● WAL 出力のロック競合が軽減(並列性向上)
table,
index,
etc,
WAL
更新処理
postgres
プロセス
15
性能チューニング補助
● pg_prewarm
●
指定したテーブルやインデックスのデータを共有バッ
ファや OS バッファに載せるユーティリティツール
– 再起動直後に動作が遅い場合の対策に
●
EXPLAIN ANALYZE 出力が拡張
– プラン作成時間と実行時間が(合算でなく)別表示
– 「 Group Key: 」が表示
● 各種メッセージで行ロック待ち対象行が明示
ERROR: canceling statement due to user request
CONTEXT: while locking tuple (0,1) in relation "t1"
16
バイナリ JSON 型
● 新たな JSON データ格納用 JSONB データ型
●
構文解析したうえでバイナリ格納
– 従来 JSON 型はテキスト格納で、処理のつど構文解析
– 要素間の空白文字や、無駄なキー重複定義は、データとして
保持されない
● GIN インデックスが利用可能
– JSON データ内の要素を高速に検索可能
{"a":1,"b":2,"c":3}
{ "a":1, "b":2, "c":3 }
{"a":1, "b":200, "b":20,"b":2, "c":3}
JSONB では
三つは同値
17
新しい SQL 構文
● CHECK オプション付き更新ビュー
– ビューとして見える内容しか挿入、更新できなくなります
● FILTER
– 集約処理時点でフィルタを設定できます
CREATE VIEW uv AS SELECT c1, c2 FROM t1
WITH CHECK OPTION;
SELECT grp, count(*) FILTER (WHERE status = 1)
count(*) (WHERE status = 2)
FROM tbl GROUP BY grp;
18
管理機能の拡張 (1)
● REFRESH MATERIALIZED VIEW
[CONCURRENTLY]
– 単一ユニークキーならロック競合回避モードを選択可
● ALTER SYSTEM コマンド
– SQL で postgresql.conf 設定ファイルを書き換え
● ALTER TABLESPACE 拡張
●
テーブルスペース毎に ramdom_page_cost 指定
– ストレージデバイスに応じたチューニング
●
MOVE でまとめて指定テーブルスペースに移動
– 従来はオブジェクト毎に ALTER TABLE 等で移動
19
管理機能の拡張 (1)
● REFRESH MATERIALIZED VIEW
[CONCURRENTLY]
– 単一ユニークキーならロック競合回避モードを選択可
● ALTER SYSTEM コマンド
– SQL で postgresql.conf 設定ファイルを書き換え
● ALTER TABLESPACE 拡張
●
テーブルスペース毎に random_page_cost 指定
– ストレージデバイスに応じたチューニング
●
MOVE でまとめて指定テーブルスペースに移動
– 従来はオブジェクト毎に ALTER TABLE 等で移動
20
管理機能の拡張 (2)
● pg_stat_archiver ビュー
– アーカイブ状態を SQL コマンドから確認
● 設定項目追加
● autovacuum_work_mem
– 自動 VACUUM における work_mem
●
session_preload_library
– 接続ごとの事前ロードライブラリ
● wal_log_hints
– ヒントビット(フラグ)変更でも WAL を書き出すか指定/ on
でチェックサム機能を有効にしたとき同様の WAL 量となる
21
管理機能の拡張 (3)
● recovery_target = 'immediate'
●
recovery.conf に、このように記述すると整合性がとれ
た段階でリカバリを停止して、起動するようになる
●
psql pset の拡張
● タブ補完
● 設定値一覧表示
22
拡張のための基盤機能 (1)
● 論理(ロジカル)変更出力フレームワーク
●
WAL に行変更情報を出力できる
● 読み取る API が用意されている
● 行を特定するのに何を使うかをテーブル毎に指定
– 行全体の旧値、主キー、など
●
レプリケーション、監査ログ、データ変更チェック(クエリ
キャッシュ無効化する、変更がなければ次のバックアッ
プを取らない、など)に応用
– PostgreSQL 本体付属ではないが、本機能を活用したマルチ
マスタレプリケータ「 BDR 」がある
23
拡張のための基盤機能 (2)
● 動的 (dynamic) バックエンドプロセス
– これまでは起動時に起動するのみ
– 任意タイミングで起動、停止できる
● 動的 (dynamic) 共有バッファ確保
– 本機能によるメッセージキュー「 contrib/test_shm_mq 」
● これらは拡張フレームワーク
●
将来のパラレルクエリを睨む
– 単一接続のクエリから、複数 CPU コアを使って処理を実行さ
せるのに必要な枠組み
– 動的共有バッファはプロセス間のデータ交換に必要
24
PostgreSQL 9.4 のスケジュール
●
1年前くらいに 9.4 系開発開始(コードブランチ)
● CF ( コミットフェスト)ごとに機能追加を行っていく
● 現在ベータ版でのテスト段階
●
beta1 → beta2 → rc1 → rc2 → 9.4 リリース
● 例年秋ごろリリース
master
9.4
2013 年 6 月 13 日
コードブランチ
2014 年 1 月~
最終の CF4 で
仕様凍結
2014 年 5 月 15 日
9.4beta1 リリース
2014 年秋
9.4 リリース?
25
最近の面白いネタ
● GPU で PostgreSQL を高速化
●
http://ch.nicovideo.jp/akiba-cyberspacecowboys/blomaga/ar555735
● PG-Storm により GPU に処理を振り分ける
26
ご清聴ありがとうございました
● ご質問
● 日本語の PostgreSQL 情報は、
JPUG Web サイト
www.postgresql.jp
lets.postgresql.jp
JPUG メーリングリスト
pgsql-jp
@ml.postgresql.jp

More Related Content

What's hot

Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
 
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
Masahiko Sawada
 
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介Insight Technology, Inc.
 
[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方
Kosuke Kida
 
Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121
Kosuke Kida
 
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
DynamoDB   MyNA・JPUG合同DB勉強会 in 東京DynamoDB   MyNA・JPUG合同DB勉強会 in 東京
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
Yuko Mori
 
PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説
Masao Fujii
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
Chugokudb18_1
Chugokudb18_1Chugokudb18_1
Chugokudb18_1
Kosuke Kida
 
Chugokudb18_2
Chugokudb18_2Chugokudb18_2
Chugokudb18_2
Kosuke Kida
 
PostreSQL監査
PostreSQL監査PostreSQL監査
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
 
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
Toshi Harada
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan
Masao Fujii
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
Shigeru Hanada
 
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフGresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
NTT DATA OSS Professional Services
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
NTT DATA OSS Professional Services
 
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@KyotoPostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
Shigeru Hanada
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
Kosuke Kida
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロ
tsudaa
 

What's hot (20)

Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131
 
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
 
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
 
[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方
 
Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121
 
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
DynamoDB   MyNA・JPUG合同DB勉強会 in 東京DynamoDB   MyNA・JPUG合同DB勉強会 in 東京
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
 
PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
Chugokudb18_1
Chugokudb18_1Chugokudb18_1
Chugokudb18_1
 
Chugokudb18_2
Chugokudb18_2Chugokudb18_2
Chugokudb18_2
 
PostreSQL監査
PostreSQL監査PostreSQL監査
PostreSQL監査
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
 
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
 
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフGresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@KyotoPostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロ
 

Viewers also liked

pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみpg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
Masahiko Sawada
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
Masahiko Sawada
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
Insight Technology, Inc.
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
Hiroshi Yamaguchi
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
Shigeru Hanada
 

Viewers also liked (7)

pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみpg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
 

Similar to Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介

Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきましたMasaru Kobashigawa
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo NagataInsight Technology, Inc.
 
Postgre sql update_20170310
Postgre sql update_20170310Postgre sql update_20170310
Postgre sql update_20170310
Haruka Takatsuka
 
JTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontlineJTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontline
Haruka Takatsuka
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Soudai Sone
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
Toshi Harada
 
Oss x user_meeting_6_postgres
Oss x user_meeting_6_postgresOss x user_meeting_6_postgres
Oss x user_meeting_6_postgresKosuke Kida
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
Toshi Harada
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
Toshi Harada
 
PostgreSQL UPDATEs 2016年5月 - OSC群馬
PostgreSQL UPDATEs 2016年5月 - OSC群馬PostgreSQL UPDATEs 2016年5月 - OSC群馬
PostgreSQL UPDATEs 2016年5月 - OSC群馬
Haruka Takatsuka
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
matsumoto_katsuhiko
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
Toshi Harada
 
JPUG 沖縄支部セミナー資料(2013-04-27)
JPUG 沖縄支部セミナー資料(2013-04-27)JPUG 沖縄支部セミナー資料(2013-04-27)
JPUG 沖縄支部セミナー資料(2013-04-27)
Chika SATO
 
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatech
Mikiya Okuno
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
Takayuki Shimizukawa
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
Toshi Harada
 
Pg14_sql_standard_function_body
Pg14_sql_standard_function_bodyPg14_sql_standard_function_body
Pg14_sql_standard_function_body
kasaharatt
 

Similar to Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介 (20)

Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
 
Postgre sql update_20170310
Postgre sql update_20170310Postgre sql update_20170310
Postgre sql update_20170310
 
JTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontlineJTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontline
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
 
Oss x user_meeting_6_postgres
Oss x user_meeting_6_postgresOss x user_meeting_6_postgres
Oss x user_meeting_6_postgres
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
 
PostgreSQL UPDATEs 2016年5月 - OSC群馬
PostgreSQL UPDATEs 2016年5月 - OSC群馬PostgreSQL UPDATEs 2016年5月 - OSC群馬
PostgreSQL UPDATEs 2016年5月 - OSC群馬
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
JPUG 沖縄支部セミナー資料(2013-04-27)
JPUG 沖縄支部セミナー資料(2013-04-27)JPUG 沖縄支部セミナー資料(2013-04-27)
JPUG 沖縄支部セミナー資料(2013-04-27)
 
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatech
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
Pg14_sql_standard_function_body
Pg14_sql_standard_function_bodyPg14_sql_standard_function_body
Pg14_sql_standard_function_body
 

Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介

  • 1. 1 Incoming PostgreSQL 9.4 2014-06-19 db tech showcase 大阪 2014 日本 PostgreSQL ユーザ会 関西支部支部長 宗近龍一郎 次バージョンの新機能をご紹介
  • 2. 2 はじめに ● 本セッションでは・・・ ● 日本 PostgreSQL ユーザ会について ● PostgreSQL の現状について ● 今秋リリース予定の PostgreSQL 9.4 バージョンについ てお話します
  • 3. 3 自己紹介 ● 宗近 龍一郎 ( ムネチカ リュウイチロウ ) といいま す ● 日本 PostgreSQL ユーザ会の関西支部の支部長 をしています ● 日本 PostgreSQL ユーザ会については後ほどご紹介を します ● 大阪にある株式会社あすかという会社で取締役副 社長をしています ● 会場から歩いて 10 分ほど。扇町公園の近くに会社があ ります
  • 4. 4 日本 PostgreSQL ユーザ会について ● PostgreSQL の普及促進を目的に活動する特定非 営利活動( NPO )法人です。 ● 北は北海度から、南は沖縄まで 9 つの支部があ り、それぞれの支部が特徴を出した活動をしていま す ● 勉強会や OSC への出展/講演等 ● いくつかの分科会活動があり、ドキュメントの充実 や技術検証等を行っています ● しくみ分科会、文書・書籍関連分科会等
  • 7. 7 PostgreSQL とは? ● 多機能、高性能な、オープンソースのリレーショナ ルデータベースソフトウェア ● INGRES 後継で長い歴史 ● BSD タイプのライセンス ● オーナー企業が無い開発体制 企業 製品 よくある OSS 開発体制 開発者 PostgreSQL 企業 企業 企業 PostgreSQL 開発体制 ○
  • 8. 8 PostgreSQL の軌跡 PG 7.0 PG 7.1 PG 7.2 PG 7.3 PG 7.4 PG 8.0 PG 8.1 PG 8.2 PG 8.3 PG 8.4 PG 9.0 PG 9.1 PG 9.2 0 20000 40000 60000 80000 100000 120000 PostgreSQL のコードサイズとリリース コードサイズ(byte) 更新の 高速化ビットマップ スキャンプリペアド ステートメント 並列実行 VACUUM外部キー、 JOIN 構文 トランザク ションログ スキーマ PITR 、 Windows 12 CPU スケール | 2001 年 4 月 | 2005 年 1 月 | 2009 年 7 月 | 2006 年 12 月 | 2002 年 11 月 ウィンドウ関数 再帰 SQL 64 CPU スケール | 2011 年 9 月 同期レプリケーション 外部テーブル レプリケーション Windows 64bit コードサイズとリリース 1メジャーバージョンが 1年毎にリリース
  • 9. 9 今のバージョン 9.3 について ● OSC2013 沖縄で公演された藤井さんの資料がよく まとまっています。 ● http://www.slideshare.net/hadoopxnttdata/postgre-sql93-24136770 ● かいつまんで言うと以下の機能の実装 ● マテリアライズビュー ● 更新可能ビュー ● JSON の進化 ● FDW
  • 10. 10 もっと古いバージョン ● Postgres95 とか PostgreSQL6.5 というバージョンも ありました ● 古いことなので忘れてしまっても良いです ^^;
  • 11. 11 9.4 拡張のサマリ (1) ● 性能向上&性能チューニング補助 ● GIN インデックスの性能向上 ● バイナリ JSON データ型  (JSONB) ● 新しい SQL 構文 ● 管理機能の拡張 ● 拡張のための基盤機能 ● 論理レプリケーションのための基盤 ● 並列処理のための基盤
  • 12. 12 9.4 拡張のサマリ (2) バイナリ JSON + 高速 GIN ↓ NoSQL 製品に負けない 非リレーション対応 パラレルクエリ、 両方向レプリケーション、 を実現する布石となる機能
  • 13. 13 性能向上 (1) ● GIN インデックスの性能向上 ● 配列、ハッシュ( hstore )、全文検索テキストなど、複数 要素を持つデータ型に対して「ある要素を持つもの」を 検索するときに使われるインデックス ● サイズ縮小(2~10倍)、検索も高速化 key (整数 型) tags (配列型) 100 'DBA' , 'SQL' 101 'SQL' , 'HACK' 102 'DBA' 103 'HACK' GIN 'DBA' を 含むものは?
  • 14. 14 性能向上 (2) ● WAL 性能向上 ● PostgreSQL はデータ更新にあたり、必ず WAL ( Write Ahead Log =トランザクションログ)をストレージに書き 出し、しばしば性能ボトルネックとなります ● データ更新に対する WAL 出力量が軽減 ● WAL 出力のロック競合が軽減(並列性向上) table, index, etc, WAL 更新処理 postgres プロセス
  • 15. 15 性能チューニング補助 ● pg_prewarm ● 指定したテーブルやインデックスのデータを共有バッ ファや OS バッファに載せるユーティリティツール – 再起動直後に動作が遅い場合の対策に ● EXPLAIN ANALYZE 出力が拡張 – プラン作成時間と実行時間が(合算でなく)別表示 – 「 Group Key: 」が表示 ● 各種メッセージで行ロック待ち対象行が明示 ERROR: canceling statement due to user request CONTEXT: while locking tuple (0,1) in relation "t1"
  • 16. 16 バイナリ JSON 型 ● 新たな JSON データ格納用 JSONB データ型 ● 構文解析したうえでバイナリ格納 – 従来 JSON 型はテキスト格納で、処理のつど構文解析 – 要素間の空白文字や、無駄なキー重複定義は、データとして 保持されない ● GIN インデックスが利用可能 – JSON データ内の要素を高速に検索可能 {"a":1,"b":2,"c":3} { "a":1, "b":2, "c":3 } {"a":1, "b":200, "b":20,"b":2, "c":3} JSONB では 三つは同値
  • 17. 17 新しい SQL 構文 ● CHECK オプション付き更新ビュー – ビューとして見える内容しか挿入、更新できなくなります ● FILTER – 集約処理時点でフィルタを設定できます CREATE VIEW uv AS SELECT c1, c2 FROM t1 WITH CHECK OPTION; SELECT grp, count(*) FILTER (WHERE status = 1) count(*) (WHERE status = 2) FROM tbl GROUP BY grp;
  • 18. 18 管理機能の拡張 (1) ● REFRESH MATERIALIZED VIEW [CONCURRENTLY] – 単一ユニークキーならロック競合回避モードを選択可 ● ALTER SYSTEM コマンド – SQL で postgresql.conf 設定ファイルを書き換え ● ALTER TABLESPACE 拡張 ● テーブルスペース毎に ramdom_page_cost 指定 – ストレージデバイスに応じたチューニング ● MOVE でまとめて指定テーブルスペースに移動 – 従来はオブジェクト毎に ALTER TABLE 等で移動
  • 19. 19 管理機能の拡張 (1) ● REFRESH MATERIALIZED VIEW [CONCURRENTLY] – 単一ユニークキーならロック競合回避モードを選択可 ● ALTER SYSTEM コマンド – SQL で postgresql.conf 設定ファイルを書き換え ● ALTER TABLESPACE 拡張 ● テーブルスペース毎に random_page_cost 指定 – ストレージデバイスに応じたチューニング ● MOVE でまとめて指定テーブルスペースに移動 – 従来はオブジェクト毎に ALTER TABLE 等で移動
  • 20. 20 管理機能の拡張 (2) ● pg_stat_archiver ビュー – アーカイブ状態を SQL コマンドから確認 ● 設定項目追加 ● autovacuum_work_mem – 自動 VACUUM における work_mem ● session_preload_library – 接続ごとの事前ロードライブラリ ● wal_log_hints – ヒントビット(フラグ)変更でも WAL を書き出すか指定/ on でチェックサム機能を有効にしたとき同様の WAL 量となる
  • 21. 21 管理機能の拡張 (3) ● recovery_target = 'immediate' ● recovery.conf に、このように記述すると整合性がとれ た段階でリカバリを停止して、起動するようになる ● psql pset の拡張 ● タブ補完 ● 設定値一覧表示
  • 22. 22 拡張のための基盤機能 (1) ● 論理(ロジカル)変更出力フレームワーク ● WAL に行変更情報を出力できる ● 読み取る API が用意されている ● 行を特定するのに何を使うかをテーブル毎に指定 – 行全体の旧値、主キー、など ● レプリケーション、監査ログ、データ変更チェック(クエリ キャッシュ無効化する、変更がなければ次のバックアッ プを取らない、など)に応用 – PostgreSQL 本体付属ではないが、本機能を活用したマルチ マスタレプリケータ「 BDR 」がある
  • 23. 23 拡張のための基盤機能 (2) ● 動的 (dynamic) バックエンドプロセス – これまでは起動時に起動するのみ – 任意タイミングで起動、停止できる ● 動的 (dynamic) 共有バッファ確保 – 本機能によるメッセージキュー「 contrib/test_shm_mq 」 ● これらは拡張フレームワーク ● 将来のパラレルクエリを睨む – 単一接続のクエリから、複数 CPU コアを使って処理を実行さ せるのに必要な枠組み – 動的共有バッファはプロセス間のデータ交換に必要
  • 24. 24 PostgreSQL 9.4 のスケジュール ● 1年前くらいに 9.4 系開発開始(コードブランチ) ● CF ( コミットフェスト)ごとに機能追加を行っていく ● 現在ベータ版でのテスト段階 ● beta1 → beta2 → rc1 → rc2 → 9.4 リリース ● 例年秋ごろリリース master 9.4 2013 年 6 月 13 日 コードブランチ 2014 年 1 月~ 最終の CF4 で 仕様凍結 2014 年 5 月 15 日 9.4beta1 リリース 2014 年秋 9.4 リリース?
  • 25. 25 最近の面白いネタ ● GPU で PostgreSQL を高速化 ● http://ch.nicovideo.jp/akiba-cyberspacecowboys/blomaga/ar555735 ● PG-Storm により GPU に処理を振り分ける
  • 26. 26 ご清聴ありがとうございました ● ご質問 ● 日本語の PostgreSQL 情報は、 JPUG Web サイト www.postgresql.jp lets.postgresql.jp JPUG メーリングリスト pgsql-jp @ml.postgresql.jp