More Related Content
Similar to Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介
Similar to Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介 (20)
Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介
- 3. 3
自己紹介
● 宗近 龍一郎 ( ムネチカ リュウイチロウ ) といいま
す
● 日本 PostgreSQL ユーザ会の関西支部の支部長
をしています
●
日本 PostgreSQL ユーザ会については後ほどご紹介を
します
● 大阪にある株式会社あすかという会社で取締役副
社長をしています
●
会場から歩いて 10 分ほど。扇町公園の近くに会社があ
ります
- 4. 4
日本 PostgreSQL ユーザ会について
● PostgreSQL の普及促進を目的に活動する特定非
営利活動( NPO )法人です。
● 北は北海度から、南は沖縄まで 9 つの支部があ
り、それぞれの支部が特徴を出した活動をしていま
す
●
勉強会や OSC への出展/講演等
●
いくつかの分科会活動があり、ドキュメントの充実
や技術検証等を行っています
● しくみ分科会、文書・書籍関連分科会等
- 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
- 11. 11
9.4 拡張のサマリ (1)
● 性能向上&性能チューニング補助
●
GIN インデックスの性能向上
● バイナリ JSON データ型 (JSONB)
● 新しい SQL 構文
● 管理機能の拡張
● 拡張のための基盤機能
● 論理レプリケーションのための基盤
●
並列処理のための基盤
- 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
プロセス
- 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 量となる
- 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 に処理を振り分ける