Mais conteúdo relacionado
Semelhante a PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介 (20)
Mais de Insight Technology, Inc. (20)
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
- 2. 2
はじめに
● 本セッションでは・・・
● 日本PostgreSQLユーザ会について
● PostgreSQLの現状について
● 今秋リリース予定の PostgreSQL 9.4 バージョンについ
てお話します
● なお、この講演の内容はdbtech show case 2014
Osakaで講演したものとほぼ同じです
- 3. 3
自己紹介1
● 宗近 龍一郎(ムネチカ リュウイチロウ)といいま
す
● 日本PostgreSQLユーザ会の関西支部の支部長
をしています
● 日本PostgreSQLユーザ会については後ほどご紹介を
します
● 大阪にある株式会社あすかという会社で取締役副
社長をしています
● 会場から歩いて10分ほど。扇町公園の近くに会社があ
ります
- 4. 4
自己紹介2
● FaceBookは実名の「宗近 龍一郎」で
● Twitterは @my_pp で書いてます。
- 5. 5
日本PostgreSQL ユーザ会について
● PostgreSQL の普及促進を目的に活動する特定非
営利活動( NPO )法人です。
● 北は北海度から、南は沖縄まで9つの支部があ
り、それぞれの支部が特徴を出した活動をしていま
す
● 勉強会やOSCへの出展/講演等
● いくつかの分科会活動があり、ドキュメントの充実
や技術検証等を行っています
● しくみ分科会、文書・書籍関連分科会等
- 6. 6
SRA OSS Inc. について
● SRA OSS は、オープンソースソフトウェアのトータル・ソ
リューション・サプライヤーとして、コンサルティング、ソフト
ウェアサポート、トレーニング、そして PostgreSQL をベー
スにした PowerGres ファミリーの提供という事業を展開し
ています。
● PowerGresの開発元ではありますが、PostgreSQLの開
発元ではありません。
● 取締役日本支社長の石井さんが、PostgreSQLに日本
語、韓国語、中国語、その
● 他の英語以外の文字コードを扱える機能を追加したり、負
荷分散に寄与するミドルウェアのpgpool-IIの開発を行って
います。
●
- 9. 9
PostgreSQL とは?
● 多機能、高性能な、オープンソースのリレーショナ
ルデータベースソフトウェア
● INGRES後継で長い歴史
● BSD タイプのライセンス
PostgreSQL開発体制○
● オーナー企業が無い開発体制
よくあるOSS開発体制
企業
製品
開発者
PostgreSQL
企業
企業
企業
- 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
今のバージョン9.3 について
● OSC2013沖縄で公演された藤井さんの資料がよく
まとまっています。
● http://www.slideshare.net/hadoopxnttdata/postgre-sql93-24136770
● かいつまんで言うと以下の機能の実装
● マテリアライズビュー
● 更新可能ビュー
● JSONの進化
● FDW
- 12. 12
もっと古いバージョン
● Postgres95とかPostgreSQL6.5というバージョンも
ありました
● 古いことなので忘れてしまっても良いです ^^;
- 13. 13
9.4 拡張のサマリ(1)
● 性能向上&性能チューニング補助
● GINインデックスの性能向上
● バイナリJSONデータ型 (JSONB)
● 新しいSQL構文
● 管理機能の拡張
● 拡張のための基盤機能
● 論理レプリケーションのための基盤
● 並列処理のための基盤
- 14. 14
9.4 拡張のサマリ(2)
バイナリJSON
+
高速GIN
↓
NoSQL 製品に負けない
非リレーション対応
パラレルクエリ、
両方向レプリケーション、
を実現する布石となる機能
- 15. 15
性能向上(1)
● GIN インデックスの性能向上
● 配列、ハッシュ( hstore )、全文検索テキストなど、複数
要素を持つデータ型に対して「ある要素を持つもの」を
検索するときに使われるインデックス
● サイズ縮小(2~10倍)、検索も高速化
key (整数型) tags (配列型)
100 'DBA' , 'SQL'
101 'SQL' , 'HACK'
102 'DBA'
103 'HACK'
GIN
'DBA' を
含むものは?
- 16. 16
性能向上(2)
● WAL性能向上
● PostgreSQLはデータ更新にあたり、必ずWAL ( Write
Ahead Log=トランザクションログ)をストレージに書き
出し、しばしば性能ボトルネックとなります
● データ更新に対するWAL出力量が軽減
● WAL出力のロック競合が軽減(並列性向上)
table,
index,
etc,
WAL
更新処理
postgres
プロセス
- 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
バイナリ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
新しい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
管理機能の拡張(1)
● REFRESH MATERIALIZED VIEW
[CONCURRENTLY]
– 単一ユニークキーならロック競合回避モードを選択可
● ALTER SYSTEM コマンド
– SQLでpostgresql.conf設定ファイルを書き換え
● ALTER TABLESPACE拡張
● テーブルスペース毎にramdom_page_cost指定
– ストレージデバイスに応じたチューニング
● MOVEでまとめて指定テーブルスペースに移動
– 従来はオブジェクト毎にALTER TABLE等で移動
- 21. 21
管理機能の拡張(1)
● REFRESH MATERIALIZED VIEW
[CONCURRENTLY]
– 単一ユニークキーならロック競合回避モードを選択可
● ALTER SYSTEM コマンド
– SQLでpostgresql.conf設定ファイルを書き換え
● ALTER TABLESPACE拡張
● テーブルスペース毎にrandom_page_cost指定
– ストレージデバイスに応じたチューニング
● MOVEでまとめて指定テーブルスペースに移動
– 従来はオブジェクト毎にALTER TABLE等で移動
- 22. 22
管理機能の拡張(2)
● pg_stat_archiverビュー
– アーカイブ状態をSQL コマンドから確認
● 設定項目追加
● autovacuum_work_mem
– 自動VACUUMにおける work_mem
● session_preload_library
– 接続ごとの事前ロードライブラリ
● wal_log_hints
– ヒントビット(フラグ)変更でも WAL を書き出すか指定/on
でチェックサム機能を有効にしたとき同様のWAL量となる
- 23. 23
管理機能の拡張(3)
● recovery_target = 'immediate'
● recovery.conf に、このように記述すると整合性がとれ
た段階でリカバリを停止して、起動するようになる
● psql pset の拡張
● タブ補完
● 設定値一覧表示
- 24. 24
拡張のための基盤機能(1)
● 論理(ロジカル)変更出力フレームワーク
● WALに行変更情報を出力できる
● 読み取るAPI が用意されている
● 行を特定するのに何を使うかをテーブル毎に指定
– 行全体の旧値、主キー、など
● レプリケーション、監査ログ、データ変更チェック(クエリ
キャッシュ無効化する、変更がなければ次のバックアッ
プを取らない、など)に応用
– PostgreSQL本体付属ではないが、本機能を活用したマルチ
マスタレプリケータ「BDR 」がある
- 25. 25
拡張のための基盤機能(2)
● 動的(dynamic)バックエンドプロセス
– これまでは起動時に起動するのみ
– 任意タイミングで起動、停止できる
● 動的(dynamic)共有バッファ確保
– 本機能によるメッセージキュー「contrib/test_shm_mq 」
● これらは拡張フレームワーク
● 将来のパラレルクエリを睨む
– 単一接続のクエリから、複数CPU コアを使って処理を実行さ
せるのに必要な枠組み
– 動的共有バッファはプロセス間のデータ交換に必要
- 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
最近の面白いネタ
● 9/11にPostgreSQLのJSONB対応の開発に関
わってきた Oleg Bartunov氏が来日。東京で講演
をされます。
● http://www.sraoss.co.jp/event_seminar/2014/0911.php
- 28. 28
ご清聴ありがとうございました
● ご質問
● 日本語のPostgreSQL情報は、
JPUG Web サイト
www.postgresql.jp
lets.postgresql.jp
JPUG メーリングリスト
pgsql-jp
@ml.postgresql.jp