Your SlideShare is downloading. ×
0
1 
Incoming PostgreSQL 9.4 
次バージョンの新機能をご紹介 
2014-08-28 
インサイトテクノロジー大阪支社にて 
日本PostgreSQL ユーザ会 
関西支部支部長 宗近龍一郎
2 
はじめに 
● 本セッションでは・・・ 
● 日本PostgreSQLユーザ会について 
● PostgreSQLの現状について 
● 今秋リリース予定の PostgreSQL 9.4 バージョンについ 
てお話します 
● なお、この講...
3 
自己紹介1 
● 宗近 龍一郎(ムネチカ リュウイチロウ)といいま 
す 
● 日本PostgreSQLユーザ会の関西支部の支部長 
をしています 
● 日本PostgreSQLユーザ会については後ほどご紹介を 
します 
● 大阪にある...
4 
自己紹介2 
● FaceBookは実名の「宗近 龍一郎」で 
● Twitterは @my_pp で書いてます。
5 
日本PostgreSQL ユーザ会について 
● PostgreSQL の普及促進を目的に活動する特定非 
営利活動( NPO )法人です。 
● 北は北海度から、南は沖縄まで9つの支部があ 
り、それぞれの支部が特徴を出した活動をしてい...
6 
SRA OSS Inc. について 
● SRA OSS は、オープンソースソフトウェアのトータル・ソ 
リューション・サプライヤーとして、コンサルティング、ソフト 
ウェアサポート、トレーニング、そして PostgreSQL をベー 
...
7 
日本PostgreSQL ユーザ会ウェブサイト 
● https://www.postgresql.jp/
8 
Let's Postgres 
● http://lets.postgresql.jp/
9 
PostgreSQL とは? 
● 多機能、高性能な、オープンソースのリレーショナ 
ルデータベースソフトウェア 
● INGRES後継で長い歴史 
● BSD タイプのライセンス 
PostgreSQL開発体制○ 
● オーナー企業が無...
10 
PostgreSQL の軌跡 
同期レプリケーション 
外部テーブル 
レプリケーション 
Windows 64bit 
PG 7.0 PG 7.1 PG 7.2 PG 7.3 PG 7.4 PG 8.0 PG 8.1 PG 8.2 P...
11 
今のバージョン9.3 について 
● OSC2013沖縄で公演された藤井さんの資料がよく 
まとまっています。 
● http://www.slideshare.net/hadoopxnttdata/postgre-sql93-2413...
12 
もっと古いバージョン 
● Postgres95とかPostgreSQL6.5というバージョンも 
ありました 
● 古いことなので忘れてしまっても良いです ^^;
13 
9.4 拡張のサマリ(1) 
● 性能向上&性能チューニング補助 
● GINインデックスの性能向上 
● バイナリJSONデータ型 (JSONB) 
● 新しいSQL構文 
● 管理機能の拡張 
● 拡張のための基盤機能 
● 論理レ...
14 
9.4 拡張のサマリ(2) 
バイナリJSON 
+ 
高速GIN 
↓ 
NoSQL 製品に負けない 
非リレーション対応 
パラレルクエリ、 
両方向レプリケーション、 
を実現する布石となる機能
15 
性能向上(1) 
● GIN インデックスの性能向上 
● 配列、ハッシュ( hstore )、全文検索テキストなど、複数 
要素を持つデータ型に対して「ある要素を持つもの」を 
検索するときに使われるインデックス 
● サイズ縮小(2...
16 
性能向上(2) 
● WAL性能向上 
● PostgreSQLはデータ更新にあたり、必ずWAL ( Write 
Ahead Log=トランザクションログ)をストレージに書き 
出し、しばしば性能ボトルネックとなります 
● データ更...
17 
性能チューニング補助 
● pg_prewarm 
● 指定したテーブルやインデックスのデータを共有バッ 
ファやOSバッファに載せるユーティリティツール 
– 再起動直後に動作が遅い場合の対策に 
● EXPLAIN ANALYZE ...
18 
バイナリJSON 型 
● 新たなJSONデータ格納用JSONBデータ型 
● 構文解析したうえでバイナリ格納 
– 従来JSON型はテキスト格納で、処理のつど構文解析 
– 要素間の空白文字や、無駄なキー重複定義は、データとして 
保...
19 
新しいSQL 構文 
● CHECK オプション付き更新ビュー 
CREATE VIEW uv AS SELECT c1, c2 FROM t1 
WITH CHECK OPTION; 
– ビューとして見える内容しか挿入、更新できなく...
20 
管理機能の拡張(1) 
● REFRESH MATERIALIZED VIEW 
[CONCURRENTLY] 
– 単一ユニークキーならロック競合回避モードを選択可 
● ALTER SYSTEM コマンド 
– SQLでpostgr...
21 
管理機能の拡張(1) 
● REFRESH MATERIALIZED VIEW 
[CONCURRENTLY] 
– 単一ユニークキーならロック競合回避モードを選択可 
● ALTER SYSTEM コマンド 
– SQLでpostgr...
22 
管理機能の拡張(2) 
● pg_stat_archiverビュー 
– アーカイブ状態をSQL コマンドから確認 
● 設定項目追加 
● autovacuum_work_mem 
– 自動VACUUMにおける work_mem 
●...
23 
管理機能の拡張(3) 
● recovery_target = 'immediate' 
● recovery.conf に、このように記述すると整合性がとれ 
た段階でリカバリを停止して、起動するようになる 
● psql pset ...
24 
拡張のための基盤機能(1) 
● 論理(ロジカル)変更出力フレームワーク 
● WALに行変更情報を出力できる 
● 読み取るAPI が用意されている 
● 行を特定するのに何を使うかをテーブル毎に指定 
– 行全体の旧値、主キー、など...
25 
拡張のための基盤機能(2) 
● 動的(dynamic)バックエンドプロセス 
– これまでは起動時に起動するのみ 
– 任意タイミングで起動、停止できる 
● 動的(dynamic)共有バッファ確保 
– 本機能によるメッセージキュー...
26 
PostgreSQL 9.4 のスケジュール 
● 1年前くらいに9.4系開発開始(コードブランチ) 
● CF ( コミットフェスト)ごとに機能追加を行っていく 
● 現在ベータ版でのテスト段階(beta2が7月リリー 
ス) 
● ...
27 
最近の面白いネタ 
● 9/11にPostgreSQLのJSONB対応の開発に関 
わってきた Oleg Bartunov氏が来日。東京で講演 
をされます。 
● http://www.sraoss.co.jp/event_semin...
28 
ご清聴ありがとうございました 
● ご質問 
● 日本語のPostgreSQL情報は、 
JPUG Web サイト 
www.postgresql.jp 
lets.postgresql.jp 
JPUG メーリングリスト 
pgsql...
Upcoming SlideShare
Loading in...5
×

PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介

1,505

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,505
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×