SlideShare a Scribd company logo
1 of 60
Download to read offline
Copyright © 2015 NTT DATA Corporation
2015年9月12日
株式会社 NTTデータ
PostgreSQL 9.5 新機能紹介
Java Küeche 勉強会 「RDB最前線」 in 沖縄
2Copyright © 2015 NTT DATA Corporation
本日は
PostgreSQL9.5の新機能を紹介します
8/6にAlpha 2 リリース!
3Copyright © 2015 NTT DATA Corporation
PostgreSQL 開発者@ NTT データ
社内 PostgreSQL 営業・技術支援
GresCube 開発・サポート
PostgreSQL のコア機能を開発
レプリケーション運用性向上
REINDEX SCHEMA / VERBOSE
pgbench(ベンチマークツール)の改善
pg_bigm(全文検索モジュール)
コア機能へのパッチレビューア
澤田 雅彦 @sawada_masahiko
4Copyright © 2015 NTT DATA Corporation
Thanks to
• Postgres 9.5 feature highlight (Michael Paquier)
• http://michael.otacoo.com/
• Waiting for 9.5 (Hubert Lubaczewski)
• http://www.depesz.com/
• 9.5 COMING TO YOU LIVE (Keith Fiske)
• http://slides.keithf4.com/pg95live/#/
• PostgreSQL Deep Dive (Satoshi Nagayasu)
• http://pgsqldeepdive.blogspot.jp/
• 日々の記録 別館(nuko_yokohama)
• http://d.hatena.ne.jp/nuko_yokohama/
5Copyright © 2015 NTT DATA Corporation
INDEX
PostgreSQLの進化の歴史
PostgreSQL 9.5 新機能紹介
性能向上系機能
開発に役に立つ機能
運用に役に立つ機能
9.6ではこんな機能が入るかも?
Copyright © 2015 NTT DATA Corporation 6
PostgreSQLの進化の歴史
7Copyright © 2015 NTT DATA Corporation
進化の歴史
カリフォルニア大学のPostgresプロジェクト(1985~1993)が母体。
近年はエンタープライズ向けの機能・性能改善を重視している。
最新版は、9.4.4(2015年6月リリース)
2003
2004
2005
2006
2007
2008
2009
2000
2011
2010
7.3
8.0
• Windows対応
• セーブポイント
• メディア故障対応(PITR)
• テーブルスペース
2012
2013
2014
7.4
8.2
• CPUスケール
• オンライン索引作成
• GIN: 汎用転置索引
8.4
• Window関数・再帰クエリ
• VACUUM用メモリ自動管理
• 他DBMS互換性向上
9.0
• レプリケーション
• 列 / 条件付きトリガ
• Windows 64bit対応
9.1
• 同期レプリケーション
• パーティショニング強化
• 一時テーブル強化
9.2
• カスケードレプリケーション
• スケーラビリティ向上
• Index検索の強化
9.3
• 切替え時間短縮
• Viewの改良
• DB間連携強化、等
8.1
• パーティショニング
• 2相コミット
• バッファ管理改良
9.4
• レプリケーションの
運用性向上
• NoSQL対応強化
• 大容量メモリ対応
8.3
• HOT: 更新性能向上
• VACUUM自動化
• 全文テキスト検索
Copyright © 2015 NTT DATA Corporation 8
PostgreSQL 9.5 とは?
9Copyright © 2015 NTT DATA Corporation
Q1. 特徴は?
A1. 大規模、特にDWH的な用途に強くなった!
Q2. いつリリース?
A2. 年内にはリリース予定 (8月にAlpha2がリリース)
10Copyright © 2015 NTT DATA Corporation
本日紹介する PostgreSQL 9.5 新機能
性能改善系
• BRIN INDEX
• WAL圧縮
運用に役立つ系
• pg_rewind
• Row Level Security(RLS)
開発に役立つ系
• UPSERT (INSERT ON CONFLICT)
• 外部テーブルの継承
• IMPORT FOREIGN SCHEMA
• GROUPING SETS, CUBE, ROLLUP
• JSONB型の演算子、関数の追加
• TABLESAMPLE句
3カテゴリ、10機能を紹介
Copyright © 2015 NTT DATA Corporation 11
性能改善系 新機能
12Copyright © 2015 NTT DATA Corporation
BRIN INDEX (Block Range INdex)
Block Range(min/max)
1 - 128 1 ~ 1000
129 - 256 1001 ~ 2000
: :
インデックス作成
CREATE INDEX hoge_brin ON hoge USING brin(col);
近接している
ブロックの束に対して
列の最小値/最大値
をインデックスに記録
:
テーブル
BRINインデックス
128
ブロック
128
ブロック
128
ブロック
128
ブロック
ブロック
凡例
13Copyright © 2015 NTT DATA Corporation
BRIN INDEX (Block Range INdex)
Block Range(min/max)
1 - 128 1 ~ 1000
129 - 256 1001 ~ 2000
: :
検索する範囲を
絞り高速に検索
:
テーブル
BRINインデックス
検索
SELECT * FROM hoge
WHERE col BETWEEN 1500 AND 1700;
ブロック
凡例
14Copyright © 2015 NTT DATA Corporation
BRIN INDEX (Block Range INdex)のFAQ
Q. BRIN INDEXの特徴は?
A. DWH用途向けのインデックス。
他のインデックスに比べ、インデックスサイズが小さい。(ブロック束の粒度は調整可能)
Q. 使いどころは?
A. 巨大なテーブルにて、ある特定の範囲を検索するときに有用 。(例えば、8月分の売り上
げを検索するなど)
さらに、カラムのデータとテーブル内の物理的な順序が相関しているとより効果的。
Q. 使用上の注意点は?
A. Btreeの代替となるインデックスではないことに注意。
静的で大規模なデータ(まさにDWH系)の検索に向いています。
15Copyright © 2015 NTT DATA Corporation
WAL圧縮
Full Page Writes(FPW)を圧縮することでWALサイズを縮小
性能改善、ディスク領域削減、レプリケーションに有用
wal_compression = off(デフォルト) / on
FPW FPW FPW FPW
Compressed
FPW
OFF
ON
WALサイズを
縮小
Compressed
FPW
Compressed
FPW
Compressed
FPW
16Copyright © 2015 NTT DATA Corporation
WAL圧縮(2)
pgbenchを使って圧縮効果を測定
※pgbench -c 5 -t 10000で測定
※②ではfiller列にランダム文字列を設定
約70%
約30%
1,200 MB
1,000 MB
800 MB
600 MB
400 MB
200 MB
0
100MB
70MB
60MB
50MB
40MB
30MB
20MB
10MB
0MB
17Copyright © 2015 NTT DATA Corporation
性能向上系まとめ
・ BRIN INDEX
・ WAL圧縮
Copyright © 2015 NTT DATA Corporation 18
開発に役立つ系新機能
19Copyright © 2015 NTT DATA Corporation
UPSERT
INSERT INTO emp VALUES (3, '鈴木', '開発')
ON CONFLICT (id)
DO UPDATE
SET name = EXCLUDED.name,
role = EXCLUDED.role;
行がなければINSERT、あればUPDATEを実行
id name role
1 斉藤 開発
2 田中 営業
3 鈴木 開発
4 山下 経理
5 佐藤 営業
id=3の行がなければ
INSERT INTO emp VALUES (3, '鈴木', '開発');
id=3の行があれば
UPDATE emp SET name = '鈴木', role = '開発'
WHERE id = 3;
20Copyright © 2015 NTT DATA Corporation
UPSERT(2)
• ON CONFLICT句では列名、制約名が指定可能
• ON CONFLICT (列名)
• ON CONFLICT 制約名
• 衝突時(CONFLICT)の動作はDO UPDATE/NOTHINGが指定可能
• DO UPDATE SET col1 = EXCLUDED.col1 WHERE col1 = ‘hoge’
• DO NOTHING
• EXCLUDED句を使うことで、VALUES句内のデータを使うことが可能
INSERT INTO emp VALUES (3, '鈴木', '開発')
ON CONFLICT (id)
DO UPDATE
SET name = EXCLUDED.name, role = EXCLUDED.role;
21Copyright © 2015 NTT DATA Corporation
FDW強化
PostgreSQL独自機能である
Foreign Data Wrapper (FDW)が
大幅に強化されました!
FDWの主な9.5新機能
• Foreign Table Inheritance
• IMPORT FOREIGN SCHEMA
22Copyright © 2015 NTT DATA Corporation
FDW(Foreign Data Wrapper)とは?
ID NAME
1 沖縄
2 新潟
…
ID NAME
1 沖縄
2 新潟
…
外部テーブル
テーブル
外部のデータをPostgreSQLのテーブルとして扱う機能
1,沖縄
2,新潟
…
CSVファイル
PostgreSQL
Oracle
read()
SELECT
SELECT
oracle_fdw
file_fdw
23Copyright © 2015 NTT DATA Corporation
FDW強化 - IMPORT FOREIGN SCHEMA -
bar スキーマ
リモート先リモート元
CREATE FOREIGN TABLE …
CREATE FOREIGN TABLE …
CREATE FOREIGN TABLE …
これまではリモート元、リモート先それぞれでテーブル定義を実行する必要があった
fdw スキーマ
CREATE TABLE …
CREATE TABLE …
CREATE TABLE …
凡例
実テーブル
外部テーブル
24Copyright © 2015 NTT DATA Corporation
FDW強化 - IMPORT FOREIGN SCHEMA -
bar スキーマ
リモート先からテーブル、ビュー、マテビューの定義をインポートできる
fdw スキーマ
CREATE TABLE …
CREATE TABLE …
CREATE TABLE …
スキーマ内の
テーブル、ビュー、マテビュー
定義をインポート
IMPORT FOREIGN SCHEMA
bar INTO fdw;
凡例
実テーブル
外部テーブル
リモート先リモート元
25Copyright © 2015 NTT DATA Corporation
FDW強化 - Foreign Table Inheritance -
外部テーブルで継承(INHERITS)が使用可能
=# CREATE FOREIGN TABLE hoge_2015_10 (date timestamp,
value text)
INHERITS (hoge_parent)
SERVER pg_server
OPTIONS(table_name ‘hoge_2015_10’);
26Copyright © 2015 NTT DATA Corporation
FDW強化 - Foreign Table Inheritance -
外部テーブルも含んだパーティショニングが可能に
Partitioning
+
FDW
SQL
子 子 子
子
子
凡例
実テーブル
外部テーブル
親
外部サーバとの通信など
子 CSV
postgres_fdw file_fdwpostgres_fdw
27Copyright © 2015 NTT DATA Corporation
GROUPING SETS, CUBE, ROLLUP
SQLの新しい構文が追加
• 1回のクエリで複数の異なる条件のGROUP処理が簡単・速く
brand | size | sum
-------+------+-----
Foo | | 30
Bar | | 20
| L | 15
| M | 35
| | 50
(5 rows)
 SELECT brand, size, sum(sales) FROM items_sold GROUP BY
GROUPING SETS ((brand), (size), ());
ブランドごとの集計
サイズごとの集計
全ての集計
<基本となるGRUPPING SETS>
28Copyright © 2015 NTT DATA Corporation
GROUPING SETS, CUBE, ROLLUP
GRUPPING SET
(),
(d1),
(d2),
(d3),
(d1,d2),
(d1 ,d3),
( d2,d3),
(d1,d2,d3)
GROUP BY CUBE (d1, d2, d3);
列挙された要素について、
全ての組み合わせごとに集計
いずれもGROUPING SETをさらに便利にする構文
GRUPPING SET
(),
(d1),
(d1,d2),
(d1,d2,d3)
列挙された要素について、
左側から絞り込んだ組み合わせごとに集計
GROUP BY CUBE (d1, d2, d3); GROUP BY ROLLUP (d1, d2, d3);
29Copyright © 2015 NTT DATA Corporation
PostgreSQLにおけるJSONの歴史
v9.2 (2012年) v9.3 (2013年) v9.4 (2014年) v9.5
TEXT型 + 構文チェッカ
利用可能な関数と演算子
はわずか
演算子4個追加
要素抽出の演算子(->)
関数10個追加
JSONから行への変換
バイナリ形式 + 構文チェッカ
GINインデックス対応
JSON型
サポート
JSONB型
サポート !?
関数と演算子の
充実化
30Copyright © 2015 NTT DATA Corporation
JSONB型に追加された新しい関数・演算子
関数
演算子
-、-# 削除
|| 追加
jsonb_concat() 追加
jsonb_delete() 削除
jsonb_set() 更新
jsonb_pretty() JSONB型を見やすく整形
NEW!
NEW!
NEW!
NEW!
NEW!
NEW!
※JSONB型でのみ使用できる関数・演算子です
31Copyright © 2015 NTT DATA Corporation
JSONB型に追加された新しい関数・演算子 - 追加 -
※同様のことがjsonb_concat関数で可能です
jsonb=# SELECT '{ "key1" : 1, "key2" : 2 }'::jsonb || '{"key3" : 3}'::jsonb ;
?column?
-----------------------------------
{"key1": 1, "key2": 2, "key3": 3}
jsonb=# SELECT '{ "key1" : 1, "key2" : 2 }'::jsonb || '{"key1" : 999}'::jsonb ;
?column?
--------------------------
{"key1": 999, "key2": 2}
32Copyright © 2015 NTT DATA Corporation
JSONB型に追加された新しい関数・演算子 - 削除 -
※同様のことがjsonb_delete関数で可能です
jsonb=# SELECT '{ "key1" : 1, "key2" : 2 }'::jsonb - 'key1';
?column?
-------------
{"key2": 2}
jsonb=# SELECT '{ "key1" : { "key11" : 11 }, "key2" : 2 }'::jsonb #- '{key1, key11}';
?column?
-------------------------
{"key1": {}, "key2": 2}
jsonb=# SELECT '[ "hoge", "bar", "foo" ]'::jsonb - 1;
?column?
-----------------
["hoge", "foo"]
33Copyright © 2015 NTT DATA Corporation
JSONB型に追加された新しい関数・演算子 - 追加・置換 -
jsonb=# SELECT jsonb_set('{ "key1" : 1, "key2" : 2 }'::jsonb,
'{"key1"}',
'999');
jsonb_set
--------------------------
{"key1": 999, "key2": 2}
jsonb=# SELECT jsonb_set('{ "key1" : 1, "key2" : 2 }'::jsonb,
'{"key999"}',
'999');
jsonb_set
---------------------------------------
{"key1": 1, "key2": 2, "key999": 999}
34Copyright © 2015 NTT DATA Corporation
JSONB型に追加された新しい関数・演算子 - 追加・置換 -
jsonb=# SELECT jsonb_set('{ "key1" : { "key:array" : [1,2,3] } , "key2" : 2 }'::jsonb,
'{"key1", "key:array"}',
'999');
jsonb_set
-----------------------------------------
{"key1": {"key:array": 999}, "key2": 2}
jsonb=# SELECT jsonb_set('{ "key1" : { "key:array" : [1,2,3] } , "key2" : 2 }'::jsonb,
'{"key1", "key:array", 1}',
'999');
jsonb_set
-------------------------------------------------
{"key1": {"key:array": [1, 999, 3]}, "key2": 2}
35Copyright © 2015 NTT DATA Corporation
JSONB型に追加された新しい関数・演算子 - 整形 -
postgres=# SELECT jsonb_pretty(
'{ "key1" : { "nest-key1" : [1, 2], "nest-key2" : { "nest-nest-key3" : "value" }}}‘
);
jsonb_pretty
---------------------------------------
{ +
"key1": { +
"nest-key1": [ +
1, +
2 +
], +
"nest-key2": { +
"nest-nest-key3": "value“ +
} +
} +
}
(1 row)
36Copyright © 2015 NTT DATA Corporation
TABLESAMPLE句
• サンプリングメソッドをBERNOULLI、SYSTEMの2つから選択
• 取得する割合をパーセント(%)で指定
• REPEATABLEオプションを使うことでサンプルを選択することが可能
• TABLESAMPLE SYSTEM(10) REPEATABLE(4);
hoge テーブル
結果セット
SELECT * FROM hoge TABLESAMPLE SYSTEM(10);
Sample Scan
テーブル内の行を
サンプリング
して結果を取得
37Copyright © 2015 NTT DATA Corporation
TABLESAMPLE句(2)
タプル単位でランダムに選択
• シーケンシャルI/O
• SYSTEMより遅い
タプル1
タプル2
タプル7
タプル8
タプル4
タプル5
タプル13
タプル9
タプル10
タプル12
タプル3
タプル11
BERNOULLIを指定
タプル1
タプル2
タプル7
タプル8
タプル4
タプル5
タプル13
タプル9
タプル10
タプル12
タプル3
タプル11
SYSTEMを指定
テーブル テーブル
ブロック
選択されたタプル
選択されないタプル
サンプリング方法は、BERNOULLI(ベルヌーイ)、SYSTEMから選択可能
ブロック単位でランダムに選択
• ランダムI/O
• BERNOULLIより早い
38Copyright © 2015 NTT DATA Corporation
TABLESAMPLE句(3)
• BERNOULLI、SYSTEM共にページまたはタプル毎に指定された確率で選択される
• 1000行のテーブルで10%を指定してもちょうど100行とは限らない
• 選択されるタプルはデッドタプルも含む
• 確実に見える行のみをサンプリング対象としたい場合は、事前にVACUUMまたはVACUUM
FULLが必要
• WHERE句と併用した場合は、「サンプリング」→「WHERE句の評価」の順
• サンプリングをしてテーブルを結合する場合は注意が必要
• サンプリングの影響でテーブルの一貫性がないように見えてしまうことも
• 結合したテーブルに対してサンプリングしたい場合はマテビューを使う
39Copyright © 2015 NTT DATA Corporation
TABLESAMPLE句についてのFAQ
Q. SYSTEM、BERNOULLIの使い分けは?
A. 遅くてもより正確な行数を取得したい→BERNOULI
多少取得行数はずれるが、速くサンプリングしたい→SYSTEM
Q. TABLESAMPLEの使いどころは?
A. 例えば、
• テーブルの中身全部をちゃんと見なくてもいい検索の時(傾向分析等)
• 総量計算の見積もり
• 「10%サンプリングして結果を10倍」 > 「全件カウント」
• SELECT item, count(*) * 10 FROM item_table TABLESAMPLE BERNOULLI(10)
WHERE item = ‘xxx’ GROUP BY item;
など
40Copyright © 2015 NTT DATA Corporation
開発に役立つ系新機能まとめ
・ UPSERT (INSERT ON CONFLICT)
・ FDW強化(Foreign table inheritance, IMPORT FOREIGN SCHEMA)
・ GROUPING SETS, CUBE, ROLLUP
・ JSONB型の演算子、関数の追加
・ TABLESAMPLE句
Copyright © 2015 NTT DATA Corporation 41
運用に役立つ系新機能
Copyright © 2015 NTT DATA Corporation 42
バージョンアップ時の非互換に注意
ちょっとその前に。
43Copyright © 2015 NTT DATA Corporation
演算子の優先度が変わりました
9.4以前の優先度
.
::
[ ]
+ -
^
* / %
+ -
IS
ISNULL
NOTNULL
(any other operator)
IN
BETWEEN
OVERLAPS
LIKE ILIKE SIMILAR
< >
=
NOT
AND
OR
9.5の優先度
.
::
[ ]
+ -
^
* / %
+ -
(any other operator)
OVERLAPS
BETWEEN IN LIKE ILIKE
SIMILAR
< > = <= >= <>
IS ISNULL NOTNULL
NOT
AND
OR
例えば、
 IS, IS NULL,IS NOT NULLが同じ優先度に
 「<,>,=…」と「IS,IS NULL…」の優先度が逆転
よりSQL標準に合った、演算子の優先度になりました
44Copyright © 2015 NTT DATA Corporation
演算子の優先度が変わりました
※ 優先度は「IS」 > 「>」なので、「3 IS true」が先に評価される
※優先度は「IS」 < 「>」
SELECT 4 > 3 IS true;
(9.4以前)
ERROR: argument of IS TRUE must be type boolean,
not type integer
(9.5)
?column?
----------
t
45Copyright © 2015 NTT DATA Corporation
演算子の優先度が変わりました
ただ、優先度が変わるケースがわかりづらい。。
9.5にバージョンアップ時に優先度の変更に気づくためには?
operator_precedence_warning = on
(9.5)
=# SET operator_precedence_warning to on;
SET
=# SELECT 4 > 3 IS true;
WARNING: operator precedence change: IS is now lower
precedence than >
LINE 1: SELECT 4 > 3 IS true;
^
?column?
----------
t
(1 row)
バージョンアップ時は、
このパラメータをON
にして、WARNING
が出たSQLを直せば
OK!
Copyright © 2015 NTT DATA Corporation 46
運用に役立つ系新機能
47Copyright © 2015 NTT DATA Corporation
ROW LEVEL SECURITY (RLS)
id name age role
1 斉藤 27 開発
2 田中 53 営業
3 鈴木 45 開発
4 山下 39 経理
5 佐藤 31 営業
role = ‘開発’
が見れるユーザ
ユーザが閲覧・操作できる行を指定できる機能
GRANTによるアクセス制御
role = ‘営業’
が見れるユーザ
テーブルへの
アクセス権が
ないユーザ
スーパーユーザー
または
テーブルの所有者
RSLによるアクセス制御
48Copyright © 2015 NTT DATA Corporation
ROW LEVEL SECURITY (RLS)
id name age role
1 斉藤 27 開発
2 田中 53 営業
3 鈴木 45 開発
4 山下 39 経理
5 佐藤 31 営業
ユーザfoo
empテーブル
例) 開発者の情報のみをユーザfooに閲覧許可したい
① CREATE POLICY emp_foo_policy ON emp
FOR SELECT
TO foo
USING (role = '開発');
② ALTER TABLE emp ENABLE ROW LEVEL SECURITY;
SELECT *
FROM tmp;
49Copyright © 2015 NTT DATA Corporation
pg_rewind
これまではフェイルバック時にはフルバックアップの転送が必須
レプリケー
ション
マスタ スタン
バイ
停止 マスタ
マスタスタン
バイ
レプリケー
ション
停止 マスタ
両系稼働
マスタ単独稼働
両系稼働
フルバックアップ転送
マスタ故障により
フェイルオーバ
旧マスタの再組込み
(フェイルバック)
面倒!大変!時間かかりすぎ!
9.4
フル
バック
アップ
50Copyright © 2015 NTT DATA Corporation
pg_rewind
フェイルバック時にDBデータを差分バックアップ転送できる機能
レプリケー
ション
マスタ スタン
バイ
停止 マスタ
マスタスタン
バイ
レプリケー
ション
停止 マスタ
差分
バック
アップ
両系稼働
マスタ単独稼働
両系稼働
差分バックアップ転送
マスタ故障により
フェイルオーバ
旧マスタの再組込み
(フェイルバック)
pg_rewind
フェイルバック時間を大幅短縮!
9.5
51Copyright © 2015 NTT DATA Corporation
運用に役立つ機能まとめ
• Row Level Security
• pg_rewind
Copyright © 2015 NTT DATA Corporation 52
9.6には、こんな機能が入るかも?
53Copyright © 2015 NTT DATA Corporation
9.6提案中の機能
PG PG
PG
backend
凡例
実テーブル
外部テーブル
Parallel
Query
worker worker worker
Join
Pushdown
SQL
VACUUM
強化
54Copyright © 2015 NTT DATA Corporation
マルチ同期レプリケーション(quorum commit)
マスタ
スタンバイ
例えば、
スタンバイのうち2台から応答があったら
同期レプリケーションは完了と判断したい!
同期レプリケーションのより柔軟な構成を可能にする機能
55Copyright © 2015 NTT DATA Corporation
さいごに
PostgreSQL 9.5 使ってみませんか?
ソースコードはこちら
http://www.postgresql.org/ftp/source/v9.5alpha2/
バグ報告はこちら
http://www.postgresql.org/support/submitbug/
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation
ご清聴ありがとうございました
Copyright © 2015 NTT DATA Corporation 57
参考資料
58Copyright © 2015 NTT DATA Corporation
参照スケーラビリティ向上
9.4に比べ、参照スケーラビリティが大きく向上
Scalability and Performance Improvements in PostgreSQL by Amit Kapila
https://www.pgcon.org/2015/schedule/attachments/378_postgresql-95-scalability-perf-improvements.pdf
DBデータが全てShared Bufferに収まるケース DBデータが全てメモリに収まるケース
LWLock
を改善
バッファ置換、
バッファ管理方法
を改善
59Copyright © 2015 NTT DATA Corporation
id …
10
20 …
30 …
40 …
50 …
SKIP LOCKED句
SELECT * FROM hoge
WHERE id > 20
FOR UPDATE
NOWAIT;
SELECT * FROM hoge
WHERE id > 20
FOR UPDATE
SKIP LOCKED;
行ロックが取れる行だけロックして結果を取得
30 …
50 …
②
行ロックが取れる行のみ
(id = 30と50)
結果を返す
②
行ロックが一つでも
取れなかったら
ERROR終了
①
他処理によって
既に行ロックされてる
60Copyright © 2015 NTT DATA Corporation
スタンバイWALアーカイブ
スタンバイサーバでのWALアーカイブが可能に!
archive_modeにalwaysが追加
レプリケー
ション
マスタ
スタン
バイ
スタン
バイ
スタン
バイ
WAL
アーカイブ
archive_mode = off
WAL
アーカイブ
archive_mode = always
archive_mode = always

More Related Content

What's hot

PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介Insight Technology, Inc.
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介Masahiko Sawada
 
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@KyotoShigeru Hanada
 
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari KatsumataInsight Technology, Inc.
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張Shigeru Hanada
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5Toshi Harada
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_planMasao Fujii
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)Daichi Egawa
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブルShigeru Hanada
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性Ohyama Masanori
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説Masahiko Sawada
 

What's hot (20)

PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
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
 
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
PostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もうPostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もう
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフGresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブル
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 

Similar to PostgreSQL 9.5 新機能紹介

[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0Ryusuke Kajiyama
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかたTomoyuki Oota
 
What's new in Couchbase Server 4.0 ja
What's new in Couchbase Server 4.0 jaWhat's new in Couchbase Server 4.0 ja
What's new in Couchbase Server 4.0 jaCouchbase Japan KK
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
About OpenStack DBaas (trove)
About OpenStack DBaas (trove)About OpenStack DBaas (trove)
About OpenStack DBaas (trove)Ikuo Kumagai
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11MapR Technologies Japan
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC EnterpriseYusukeKuramata
 
ブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせるブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせるKLab Inc. / Tech
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集Couchbase Japan KK
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignRyuji TAKEHARA
 
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例 by 株式会社日立製作所 ...
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例  by 株式会社日立製作所 ...[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例  by 株式会社日立製作所 ...
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例 by 株式会社日立製作所 ...Insight Technology, Inc.
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜griddb
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003Shinya Sugiyama
 

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

PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
JSONBはPostgreSQL9.5でいかに改善されたのか
JSONBはPostgreSQL9.5でいかに改善されたのかJSONBはPostgreSQL9.5でいかに改善されたのか
JSONBはPostgreSQL9.5でいかに改善されたのか
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
 
What's new in Couchbase Server 4.0 ja
What's new in Couchbase Server 4.0 jaWhat's new in Couchbase Server 4.0 ja
What's new in Couchbase Server 4.0 ja
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京
 
About OpenStack DBaas (trove)
About OpenStack DBaas (trove)About OpenStack DBaas (trove)
About OpenStack DBaas (trove)
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
ブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせるブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせる
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
 
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例 by 株式会社日立製作所 ...
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例  by 株式会社日立製作所 ...[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例  by 株式会社日立製作所 ...
[db tech showcase Tokyo 2014] B33: 超高速データベースエンジンでのビッグデータ分析活用事例 by 株式会社日立製作所 ...
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
 

More from NTT DATA OSS Professional Services

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~NTT DATA OSS Professional Services
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~NTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのことNTT DATA OSS Professional Services
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~NTT DATA OSS Professional Services
 

More from NTT DATA OSS Professional Services (20)

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
 

Recently uploaded

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Recently uploaded (7)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

PostgreSQL 9.5 新機能紹介

  • 1. Copyright © 2015 NTT DATA Corporation 2015年9月12日 株式会社 NTTデータ PostgreSQL 9.5 新機能紹介 Java Küeche 勉強会 「RDB最前線」 in 沖縄
  • 2. 2Copyright © 2015 NTT DATA Corporation 本日は PostgreSQL9.5の新機能を紹介します 8/6にAlpha 2 リリース!
  • 3. 3Copyright © 2015 NTT DATA Corporation PostgreSQL 開発者@ NTT データ 社内 PostgreSQL 営業・技術支援 GresCube 開発・サポート PostgreSQL のコア機能を開発 レプリケーション運用性向上 REINDEX SCHEMA / VERBOSE pgbench(ベンチマークツール)の改善 pg_bigm(全文検索モジュール) コア機能へのパッチレビューア 澤田 雅彦 @sawada_masahiko
  • 4. 4Copyright © 2015 NTT DATA Corporation Thanks to • Postgres 9.5 feature highlight (Michael Paquier) • http://michael.otacoo.com/ • Waiting for 9.5 (Hubert Lubaczewski) • http://www.depesz.com/ • 9.5 COMING TO YOU LIVE (Keith Fiske) • http://slides.keithf4.com/pg95live/#/ • PostgreSQL Deep Dive (Satoshi Nagayasu) • http://pgsqldeepdive.blogspot.jp/ • 日々の記録 別館(nuko_yokohama) • http://d.hatena.ne.jp/nuko_yokohama/
  • 5. 5Copyright © 2015 NTT DATA Corporation INDEX PostgreSQLの進化の歴史 PostgreSQL 9.5 新機能紹介 性能向上系機能 開発に役に立つ機能 運用に役に立つ機能 9.6ではこんな機能が入るかも?
  • 6. Copyright © 2015 NTT DATA Corporation 6 PostgreSQLの進化の歴史
  • 7. 7Copyright © 2015 NTT DATA Corporation 進化の歴史 カリフォルニア大学のPostgresプロジェクト(1985~1993)が母体。 近年はエンタープライズ向けの機能・性能改善を重視している。 最新版は、9.4.4(2015年6月リリース) 2003 2004 2005 2006 2007 2008 2009 2000 2011 2010 7.3 8.0 • Windows対応 • セーブポイント • メディア故障対応(PITR) • テーブルスペース 2012 2013 2014 7.4 8.2 • CPUスケール • オンライン索引作成 • GIN: 汎用転置索引 8.4 • Window関数・再帰クエリ • VACUUM用メモリ自動管理 • 他DBMS互換性向上 9.0 • レプリケーション • 列 / 条件付きトリガ • Windows 64bit対応 9.1 • 同期レプリケーション • パーティショニング強化 • 一時テーブル強化 9.2 • カスケードレプリケーション • スケーラビリティ向上 • Index検索の強化 9.3 • 切替え時間短縮 • Viewの改良 • DB間連携強化、等 8.1 • パーティショニング • 2相コミット • バッファ管理改良 9.4 • レプリケーションの 運用性向上 • NoSQL対応強化 • 大容量メモリ対応 8.3 • HOT: 更新性能向上 • VACUUM自動化 • 全文テキスト検索
  • 8. Copyright © 2015 NTT DATA Corporation 8 PostgreSQL 9.5 とは?
  • 9. 9Copyright © 2015 NTT DATA Corporation Q1. 特徴は? A1. 大規模、特にDWH的な用途に強くなった! Q2. いつリリース? A2. 年内にはリリース予定 (8月にAlpha2がリリース)
  • 10. 10Copyright © 2015 NTT DATA Corporation 本日紹介する PostgreSQL 9.5 新機能 性能改善系 • BRIN INDEX • WAL圧縮 運用に役立つ系 • pg_rewind • Row Level Security(RLS) 開発に役立つ系 • UPSERT (INSERT ON CONFLICT) • 外部テーブルの継承 • IMPORT FOREIGN SCHEMA • GROUPING SETS, CUBE, ROLLUP • JSONB型の演算子、関数の追加 • TABLESAMPLE句 3カテゴリ、10機能を紹介
  • 11. Copyright © 2015 NTT DATA Corporation 11 性能改善系 新機能
  • 12. 12Copyright © 2015 NTT DATA Corporation BRIN INDEX (Block Range INdex) Block Range(min/max) 1 - 128 1 ~ 1000 129 - 256 1001 ~ 2000 : : インデックス作成 CREATE INDEX hoge_brin ON hoge USING brin(col); 近接している ブロックの束に対して 列の最小値/最大値 をインデックスに記録 : テーブル BRINインデックス 128 ブロック 128 ブロック 128 ブロック 128 ブロック ブロック 凡例
  • 13. 13Copyright © 2015 NTT DATA Corporation BRIN INDEX (Block Range INdex) Block Range(min/max) 1 - 128 1 ~ 1000 129 - 256 1001 ~ 2000 : : 検索する範囲を 絞り高速に検索 : テーブル BRINインデックス 検索 SELECT * FROM hoge WHERE col BETWEEN 1500 AND 1700; ブロック 凡例
  • 14. 14Copyright © 2015 NTT DATA Corporation BRIN INDEX (Block Range INdex)のFAQ Q. BRIN INDEXの特徴は? A. DWH用途向けのインデックス。 他のインデックスに比べ、インデックスサイズが小さい。(ブロック束の粒度は調整可能) Q. 使いどころは? A. 巨大なテーブルにて、ある特定の範囲を検索するときに有用 。(例えば、8月分の売り上 げを検索するなど) さらに、カラムのデータとテーブル内の物理的な順序が相関しているとより効果的。 Q. 使用上の注意点は? A. Btreeの代替となるインデックスではないことに注意。 静的で大規模なデータ(まさにDWH系)の検索に向いています。
  • 15. 15Copyright © 2015 NTT DATA Corporation WAL圧縮 Full Page Writes(FPW)を圧縮することでWALサイズを縮小 性能改善、ディスク領域削減、レプリケーションに有用 wal_compression = off(デフォルト) / on FPW FPW FPW FPW Compressed FPW OFF ON WALサイズを 縮小 Compressed FPW Compressed FPW Compressed FPW
  • 16. 16Copyright © 2015 NTT DATA Corporation WAL圧縮(2) pgbenchを使って圧縮効果を測定 ※pgbench -c 5 -t 10000で測定 ※②ではfiller列にランダム文字列を設定 約70% 約30% 1,200 MB 1,000 MB 800 MB 600 MB 400 MB 200 MB 0 100MB 70MB 60MB 50MB 40MB 30MB 20MB 10MB 0MB
  • 17. 17Copyright © 2015 NTT DATA Corporation 性能向上系まとめ ・ BRIN INDEX ・ WAL圧縮
  • 18. Copyright © 2015 NTT DATA Corporation 18 開発に役立つ系新機能
  • 19. 19Copyright © 2015 NTT DATA Corporation UPSERT INSERT INTO emp VALUES (3, '鈴木', '開発') ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name, role = EXCLUDED.role; 行がなければINSERT、あればUPDATEを実行 id name role 1 斉藤 開発 2 田中 営業 3 鈴木 開発 4 山下 経理 5 佐藤 営業 id=3の行がなければ INSERT INTO emp VALUES (3, '鈴木', '開発'); id=3の行があれば UPDATE emp SET name = '鈴木', role = '開発' WHERE id = 3;
  • 20. 20Copyright © 2015 NTT DATA Corporation UPSERT(2) • ON CONFLICT句では列名、制約名が指定可能 • ON CONFLICT (列名) • ON CONFLICT 制約名 • 衝突時(CONFLICT)の動作はDO UPDATE/NOTHINGが指定可能 • DO UPDATE SET col1 = EXCLUDED.col1 WHERE col1 = ‘hoge’ • DO NOTHING • EXCLUDED句を使うことで、VALUES句内のデータを使うことが可能 INSERT INTO emp VALUES (3, '鈴木', '開発') ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name, role = EXCLUDED.role;
  • 21. 21Copyright © 2015 NTT DATA Corporation FDW強化 PostgreSQL独自機能である Foreign Data Wrapper (FDW)が 大幅に強化されました! FDWの主な9.5新機能 • Foreign Table Inheritance • IMPORT FOREIGN SCHEMA
  • 22. 22Copyright © 2015 NTT DATA Corporation FDW(Foreign Data Wrapper)とは? ID NAME 1 沖縄 2 新潟 … ID NAME 1 沖縄 2 新潟 … 外部テーブル テーブル 外部のデータをPostgreSQLのテーブルとして扱う機能 1,沖縄 2,新潟 … CSVファイル PostgreSQL Oracle read() SELECT SELECT oracle_fdw file_fdw
  • 23. 23Copyright © 2015 NTT DATA Corporation FDW強化 - IMPORT FOREIGN SCHEMA - bar スキーマ リモート先リモート元 CREATE FOREIGN TABLE … CREATE FOREIGN TABLE … CREATE FOREIGN TABLE … これまではリモート元、リモート先それぞれでテーブル定義を実行する必要があった fdw スキーマ CREATE TABLE … CREATE TABLE … CREATE TABLE … 凡例 実テーブル 外部テーブル
  • 24. 24Copyright © 2015 NTT DATA Corporation FDW強化 - IMPORT FOREIGN SCHEMA - bar スキーマ リモート先からテーブル、ビュー、マテビューの定義をインポートできる fdw スキーマ CREATE TABLE … CREATE TABLE … CREATE TABLE … スキーマ内の テーブル、ビュー、マテビュー 定義をインポート IMPORT FOREIGN SCHEMA bar INTO fdw; 凡例 実テーブル 外部テーブル リモート先リモート元
  • 25. 25Copyright © 2015 NTT DATA Corporation FDW強化 - Foreign Table Inheritance - 外部テーブルで継承(INHERITS)が使用可能 =# CREATE FOREIGN TABLE hoge_2015_10 (date timestamp, value text) INHERITS (hoge_parent) SERVER pg_server OPTIONS(table_name ‘hoge_2015_10’);
  • 26. 26Copyright © 2015 NTT DATA Corporation FDW強化 - Foreign Table Inheritance - 外部テーブルも含んだパーティショニングが可能に Partitioning + FDW SQL 子 子 子 子 子 凡例 実テーブル 外部テーブル 親 外部サーバとの通信など 子 CSV postgres_fdw file_fdwpostgres_fdw
  • 27. 27Copyright © 2015 NTT DATA Corporation GROUPING SETS, CUBE, ROLLUP SQLの新しい構文が追加 • 1回のクエリで複数の異なる条件のGROUP処理が簡単・速く brand | size | sum -------+------+----- Foo | | 30 Bar | | 20 | L | 15 | M | 35 | | 50 (5 rows)  SELECT brand, size, sum(sales) FROM items_sold GROUP BY GROUPING SETS ((brand), (size), ()); ブランドごとの集計 サイズごとの集計 全ての集計 <基本となるGRUPPING SETS>
  • 28. 28Copyright © 2015 NTT DATA Corporation GROUPING SETS, CUBE, ROLLUP GRUPPING SET (), (d1), (d2), (d3), (d1,d2), (d1 ,d3), ( d2,d3), (d1,d2,d3) GROUP BY CUBE (d1, d2, d3); 列挙された要素について、 全ての組み合わせごとに集計 いずれもGROUPING SETをさらに便利にする構文 GRUPPING SET (), (d1), (d1,d2), (d1,d2,d3) 列挙された要素について、 左側から絞り込んだ組み合わせごとに集計 GROUP BY CUBE (d1, d2, d3); GROUP BY ROLLUP (d1, d2, d3);
  • 29. 29Copyright © 2015 NTT DATA Corporation PostgreSQLにおけるJSONの歴史 v9.2 (2012年) v9.3 (2013年) v9.4 (2014年) v9.5 TEXT型 + 構文チェッカ 利用可能な関数と演算子 はわずか 演算子4個追加 要素抽出の演算子(->) 関数10個追加 JSONから行への変換 バイナリ形式 + 構文チェッカ GINインデックス対応 JSON型 サポート JSONB型 サポート !? 関数と演算子の 充実化
  • 30. 30Copyright © 2015 NTT DATA Corporation JSONB型に追加された新しい関数・演算子 関数 演算子 -、-# 削除 || 追加 jsonb_concat() 追加 jsonb_delete() 削除 jsonb_set() 更新 jsonb_pretty() JSONB型を見やすく整形 NEW! NEW! NEW! NEW! NEW! NEW! ※JSONB型でのみ使用できる関数・演算子です
  • 31. 31Copyright © 2015 NTT DATA Corporation JSONB型に追加された新しい関数・演算子 - 追加 - ※同様のことがjsonb_concat関数で可能です jsonb=# SELECT '{ "key1" : 1, "key2" : 2 }'::jsonb || '{"key3" : 3}'::jsonb ; ?column? ----------------------------------- {"key1": 1, "key2": 2, "key3": 3} jsonb=# SELECT '{ "key1" : 1, "key2" : 2 }'::jsonb || '{"key1" : 999}'::jsonb ; ?column? -------------------------- {"key1": 999, "key2": 2}
  • 32. 32Copyright © 2015 NTT DATA Corporation JSONB型に追加された新しい関数・演算子 - 削除 - ※同様のことがjsonb_delete関数で可能です jsonb=# SELECT '{ "key1" : 1, "key2" : 2 }'::jsonb - 'key1'; ?column? ------------- {"key2": 2} jsonb=# SELECT '{ "key1" : { "key11" : 11 }, "key2" : 2 }'::jsonb #- '{key1, key11}'; ?column? ------------------------- {"key1": {}, "key2": 2} jsonb=# SELECT '[ "hoge", "bar", "foo" ]'::jsonb - 1; ?column? ----------------- ["hoge", "foo"]
  • 33. 33Copyright © 2015 NTT DATA Corporation JSONB型に追加された新しい関数・演算子 - 追加・置換 - jsonb=# SELECT jsonb_set('{ "key1" : 1, "key2" : 2 }'::jsonb, '{"key1"}', '999'); jsonb_set -------------------------- {"key1": 999, "key2": 2} jsonb=# SELECT jsonb_set('{ "key1" : 1, "key2" : 2 }'::jsonb, '{"key999"}', '999'); jsonb_set --------------------------------------- {"key1": 1, "key2": 2, "key999": 999}
  • 34. 34Copyright © 2015 NTT DATA Corporation JSONB型に追加された新しい関数・演算子 - 追加・置換 - jsonb=# SELECT jsonb_set('{ "key1" : { "key:array" : [1,2,3] } , "key2" : 2 }'::jsonb, '{"key1", "key:array"}', '999'); jsonb_set ----------------------------------------- {"key1": {"key:array": 999}, "key2": 2} jsonb=# SELECT jsonb_set('{ "key1" : { "key:array" : [1,2,3] } , "key2" : 2 }'::jsonb, '{"key1", "key:array", 1}', '999'); jsonb_set ------------------------------------------------- {"key1": {"key:array": [1, 999, 3]}, "key2": 2}
  • 35. 35Copyright © 2015 NTT DATA Corporation JSONB型に追加された新しい関数・演算子 - 整形 - postgres=# SELECT jsonb_pretty( '{ "key1" : { "nest-key1" : [1, 2], "nest-key2" : { "nest-nest-key3" : "value" }}}‘ ); jsonb_pretty --------------------------------------- { + "key1": { + "nest-key1": [ + 1, + 2 + ], + "nest-key2": { + "nest-nest-key3": "value“ + } + } + } (1 row)
  • 36. 36Copyright © 2015 NTT DATA Corporation TABLESAMPLE句 • サンプリングメソッドをBERNOULLI、SYSTEMの2つから選択 • 取得する割合をパーセント(%)で指定 • REPEATABLEオプションを使うことでサンプルを選択することが可能 • TABLESAMPLE SYSTEM(10) REPEATABLE(4); hoge テーブル 結果セット SELECT * FROM hoge TABLESAMPLE SYSTEM(10); Sample Scan テーブル内の行を サンプリング して結果を取得
  • 37. 37Copyright © 2015 NTT DATA Corporation TABLESAMPLE句(2) タプル単位でランダムに選択 • シーケンシャルI/O • SYSTEMより遅い タプル1 タプル2 タプル7 タプル8 タプル4 タプル5 タプル13 タプル9 タプル10 タプル12 タプル3 タプル11 BERNOULLIを指定 タプル1 タプル2 タプル7 タプル8 タプル4 タプル5 タプル13 タプル9 タプル10 タプル12 タプル3 タプル11 SYSTEMを指定 テーブル テーブル ブロック 選択されたタプル 選択されないタプル サンプリング方法は、BERNOULLI(ベルヌーイ)、SYSTEMから選択可能 ブロック単位でランダムに選択 • ランダムI/O • BERNOULLIより早い
  • 38. 38Copyright © 2015 NTT DATA Corporation TABLESAMPLE句(3) • BERNOULLI、SYSTEM共にページまたはタプル毎に指定された確率で選択される • 1000行のテーブルで10%を指定してもちょうど100行とは限らない • 選択されるタプルはデッドタプルも含む • 確実に見える行のみをサンプリング対象としたい場合は、事前にVACUUMまたはVACUUM FULLが必要 • WHERE句と併用した場合は、「サンプリング」→「WHERE句の評価」の順 • サンプリングをしてテーブルを結合する場合は注意が必要 • サンプリングの影響でテーブルの一貫性がないように見えてしまうことも • 結合したテーブルに対してサンプリングしたい場合はマテビューを使う
  • 39. 39Copyright © 2015 NTT DATA Corporation TABLESAMPLE句についてのFAQ Q. SYSTEM、BERNOULLIの使い分けは? A. 遅くてもより正確な行数を取得したい→BERNOULI 多少取得行数はずれるが、速くサンプリングしたい→SYSTEM Q. TABLESAMPLEの使いどころは? A. 例えば、 • テーブルの中身全部をちゃんと見なくてもいい検索の時(傾向分析等) • 総量計算の見積もり • 「10%サンプリングして結果を10倍」 > 「全件カウント」 • SELECT item, count(*) * 10 FROM item_table TABLESAMPLE BERNOULLI(10) WHERE item = ‘xxx’ GROUP BY item; など
  • 40. 40Copyright © 2015 NTT DATA Corporation 開発に役立つ系新機能まとめ ・ UPSERT (INSERT ON CONFLICT) ・ FDW強化(Foreign table inheritance, IMPORT FOREIGN SCHEMA) ・ GROUPING SETS, CUBE, ROLLUP ・ JSONB型の演算子、関数の追加 ・ TABLESAMPLE句
  • 41. Copyright © 2015 NTT DATA Corporation 41 運用に役立つ系新機能
  • 42. Copyright © 2015 NTT DATA Corporation 42 バージョンアップ時の非互換に注意 ちょっとその前に。
  • 43. 43Copyright © 2015 NTT DATA Corporation 演算子の優先度が変わりました 9.4以前の優先度 . :: [ ] + - ^ * / % + - IS ISNULL NOTNULL (any other operator) IN BETWEEN OVERLAPS LIKE ILIKE SIMILAR < > = NOT AND OR 9.5の優先度 . :: [ ] + - ^ * / % + - (any other operator) OVERLAPS BETWEEN IN LIKE ILIKE SIMILAR < > = <= >= <> IS ISNULL NOTNULL NOT AND OR 例えば、  IS, IS NULL,IS NOT NULLが同じ優先度に  「<,>,=…」と「IS,IS NULL…」の優先度が逆転 よりSQL標準に合った、演算子の優先度になりました
  • 44. 44Copyright © 2015 NTT DATA Corporation 演算子の優先度が変わりました ※ 優先度は「IS」 > 「>」なので、「3 IS true」が先に評価される ※優先度は「IS」 < 「>」 SELECT 4 > 3 IS true; (9.4以前) ERROR: argument of IS TRUE must be type boolean, not type integer (9.5) ?column? ---------- t
  • 45. 45Copyright © 2015 NTT DATA Corporation 演算子の優先度が変わりました ただ、優先度が変わるケースがわかりづらい。。 9.5にバージョンアップ時に優先度の変更に気づくためには? operator_precedence_warning = on (9.5) =# SET operator_precedence_warning to on; SET =# SELECT 4 > 3 IS true; WARNING: operator precedence change: IS is now lower precedence than > LINE 1: SELECT 4 > 3 IS true; ^ ?column? ---------- t (1 row) バージョンアップ時は、 このパラメータをON にして、WARNING が出たSQLを直せば OK!
  • 46. Copyright © 2015 NTT DATA Corporation 46 運用に役立つ系新機能
  • 47. 47Copyright © 2015 NTT DATA Corporation ROW LEVEL SECURITY (RLS) id name age role 1 斉藤 27 開発 2 田中 53 営業 3 鈴木 45 開発 4 山下 39 経理 5 佐藤 31 営業 role = ‘開発’ が見れるユーザ ユーザが閲覧・操作できる行を指定できる機能 GRANTによるアクセス制御 role = ‘営業’ が見れるユーザ テーブルへの アクセス権が ないユーザ スーパーユーザー または テーブルの所有者 RSLによるアクセス制御
  • 48. 48Copyright © 2015 NTT DATA Corporation ROW LEVEL SECURITY (RLS) id name age role 1 斉藤 27 開発 2 田中 53 営業 3 鈴木 45 開発 4 山下 39 経理 5 佐藤 31 営業 ユーザfoo empテーブル 例) 開発者の情報のみをユーザfooに閲覧許可したい ① CREATE POLICY emp_foo_policy ON emp FOR SELECT TO foo USING (role = '開発'); ② ALTER TABLE emp ENABLE ROW LEVEL SECURITY; SELECT * FROM tmp;
  • 49. 49Copyright © 2015 NTT DATA Corporation pg_rewind これまではフェイルバック時にはフルバックアップの転送が必須 レプリケー ション マスタ スタン バイ 停止 マスタ マスタスタン バイ レプリケー ション 停止 マスタ 両系稼働 マスタ単独稼働 両系稼働 フルバックアップ転送 マスタ故障により フェイルオーバ 旧マスタの再組込み (フェイルバック) 面倒!大変!時間かかりすぎ! 9.4 フル バック アップ
  • 50. 50Copyright © 2015 NTT DATA Corporation pg_rewind フェイルバック時にDBデータを差分バックアップ転送できる機能 レプリケー ション マスタ スタン バイ 停止 マスタ マスタスタン バイ レプリケー ション 停止 マスタ 差分 バック アップ 両系稼働 マスタ単独稼働 両系稼働 差分バックアップ転送 マスタ故障により フェイルオーバ 旧マスタの再組込み (フェイルバック) pg_rewind フェイルバック時間を大幅短縮! 9.5
  • 51. 51Copyright © 2015 NTT DATA Corporation 運用に役立つ機能まとめ • Row Level Security • pg_rewind
  • 52. Copyright © 2015 NTT DATA Corporation 52 9.6には、こんな機能が入るかも?
  • 53. 53Copyright © 2015 NTT DATA Corporation 9.6提案中の機能 PG PG PG backend 凡例 実テーブル 外部テーブル Parallel Query worker worker worker Join Pushdown SQL VACUUM 強化
  • 54. 54Copyright © 2015 NTT DATA Corporation マルチ同期レプリケーション(quorum commit) マスタ スタンバイ 例えば、 スタンバイのうち2台から応答があったら 同期レプリケーションは完了と判断したい! 同期レプリケーションのより柔軟な構成を可能にする機能
  • 55. 55Copyright © 2015 NTT DATA Corporation さいごに PostgreSQL 9.5 使ってみませんか? ソースコードはこちら http://www.postgresql.org/ftp/source/v9.5alpha2/ バグ報告はこちら http://www.postgresql.org/support/submitbug/
  • 56. Copyright © 2011 NTT DATA Corporation Copyright © 2015 NTT DATA Corporation ご清聴ありがとうございました
  • 57. Copyright © 2015 NTT DATA Corporation 57 参考資料
  • 58. 58Copyright © 2015 NTT DATA Corporation 参照スケーラビリティ向上 9.4に比べ、参照スケーラビリティが大きく向上 Scalability and Performance Improvements in PostgreSQL by Amit Kapila https://www.pgcon.org/2015/schedule/attachments/378_postgresql-95-scalability-perf-improvements.pdf DBデータが全てShared Bufferに収まるケース DBデータが全てメモリに収まるケース LWLock を改善 バッファ置換、 バッファ管理方法 を改善
  • 59. 59Copyright © 2015 NTT DATA Corporation id … 10 20 … 30 … 40 … 50 … SKIP LOCKED句 SELECT * FROM hoge WHERE id > 20 FOR UPDATE NOWAIT; SELECT * FROM hoge WHERE id > 20 FOR UPDATE SKIP LOCKED; 行ロックが取れる行だけロックして結果を取得 30 … 50 … ② 行ロックが取れる行のみ (id = 30と50) 結果を返す ② 行ロックが一つでも 取れなかったら ERROR終了 ① 他処理によって 既に行ロックされてる
  • 60. 60Copyright © 2015 NTT DATA Corporation スタンバイWALアーカイブ スタンバイサーバでのWALアーカイブが可能に! archive_modeにalwaysが追加 レプリケー ション マスタ スタン バイ スタン バイ スタン バイ WAL アーカイブ archive_mode = off WAL アーカイブ archive_mode = always archive_mode = always