SlideShare ist ein Scribd-Unternehmen logo
1 von 65
Downloaden Sie, um offline zu lesen
OSS-DB Gold 
技術解説セミナー 
1 
© 2014 Metro Systems. 
db tech showcase 東京 2014 
2014/11/12 
株式会社メトロシステムズ 
 花田 茂
2 
© 2014 Metro Systems. 
自己紹介 
氏名 
花田 茂(はなだ しげる) 
所属 
株式会社メトロシステムズ(東京・池袋・サンシャイン60) 
略歴 
1999年:株式会社メトロシステムズに入社 
2003年:オープンソースデータベースのR&Dを担当 
2010年:PostgreSQLの開発に参加(主に外部データ連携) 
2013年:OSS-DB Gold取得 
現在: 
OSS関連の構築やコンサルティング、トレーニング 
PostgreSQL開発 
主に外部テーブル/FDWまわり
3 
© 2014 Metro Systems. 
本セミナーの流れ 
運用管理の基本 
PostgreSQLのアーキテクチャ 
データ構造 
性能監視 
基本的な監視項目 
便利な外部ツール 
パフォーマンスチューニング 
パラメータチューニング 
クエリチューニング 
便利な外部ツール
4 
OSS-DB試験の紹介 
© 2014 Metro Systems. 
試験の概要 
PostgreSQLの特徴
5 
OSS-DB試験とは 
オープンソースデータベース(OSS-DB)に関する技術 
と知識を認定するIT技術者認定です 
データベースシステムの設計・導入・運用ができる技術者 
© 2014 Metro Systems. 
大規模データベースシステムの 
改善・運用管理・コンサルティングができる技術者 
Linux技術者認定制度のLPICと同じく、 
LPI-Japanが実施
6 
© 2014 Metro Systems. 
OSS-DB Gold試験の出題範囲 
運用管理(30%) 
データベースサーバ構築 
運用管理コマンド全般 
データベースの構造 
ホットスタンバイ運用 
性能監視(30%) 
アクセス統計情報 
テーブル/カラム統計情報 
クエリ実行計画 
スロークエリの検出 
付属ツールによる解析 
パフォーマンスチューニング(20%) 
性能に関係するパラメータ 
チューニングの実施 
障害対応(20%) 
起こりうる障害のパターン 
破損クラスタ復旧 
ホットスタンバイ復旧 
試験時間:90分※ 
問題数:30問 
合格点:70点 
※アンケート時間等を含む
7 
OSS-DB試験の注意事項 
基本となるPostgreSQLバージョンは「9.0」以降 
一部、新しい機能に関する問題も出題 
2014年11月時点の最新バージョンは「9.3.5」 
間もなく9.4がリリース!? 
最新の試験範囲はWebで確認! 
http://www.oss-db.jp/outline/examarea.shtml 
OSに依存しない内容だが、表記はLinuxベース 
シェルのコマンドプロンプトは「$」 
ディレクトリ区切り文字は「¥」や「」でなく「/」 
© 2014 Metro Systems.
8 
© 2014 Metro Systems. 
運用管理の基本 
PostgreSQLのアーキテクチャ 
PostgreSQLのデータ構造
9 
© 2014 Metro Systems. 
PostgreSQLのアーキテクチャ(1) 
アーキテクチャにおける特徴 
多数のクライアントに高性能を提供 
マルチプロセス構成(スレッド未使用) 
共有メモリによるデータ共有とバッファリング 
追記型によるMVCC 
賢くクエリを実行 
コストベースオプティマイザ 
各種インデックス(B-TreeだけでなくGINやGiSTなど) 
任意のタイミングまでのリカバリ 
WALによるリカバリ(クラッシュリカバリやPITR) 
柔軟な構成が可能 
同期・非同期を選べるレプリケーション 
スタンバイからのオンラインバックアップ取得
10 
© 2014 Metro Systems. 
PostgreSQLのアーキテクチャ(2) 
PostgreSQLを構成する要素 
ファイルプロセス
11 
© 2014 Metro Systems. 
PostgreSQLのアーキテクチャ(2) 
PostgreSQLを構成する要素 
ファイルプロセス 
○設定ファイル 
▲サーバ設定 
▲クライアント認証設定 
○データファイル 
▲テーブル 
◇実データ 
◇空き領域マップ 
◇可視性マップ 
▲インデックス 
○ログファイル 
▲サーバログ 
▲トランザクションログ 
◇オンライン 
◇アーカイブ 
▲コミットログ
12 
© 2014 Metro Systems. 
PostgreSQLのアーキテクチャ(2) 
PostgreSQLを構成する要素 
ファイルプロセス 
○共有メモリ 
▲セッション情報 
▲プロセス情報 
▲トランザクション情報 
▲共有バッファ 
▲WALバッファ 
○ヒープメモリ 
▲プロセスコード 
▲スタック 
▲ソート領域 
▲一時バッファ
13 
© 2014 Metro Systems. 
PostgreSQLのアーキテクチャ(2) 
PostgreSQLを構成する要素 
ファイルプロセス 
○postmaster リスナ 
○postgres クエリ実行等、クライアント対応 
○logger サーバログ記録 
○checkpointer チェックポイント実行(9.2〜) 
○writer ダーティバッファのフラッシュ 
○wal writer トランザクションログ書き込み 
○autovacuum launcher 自動VACUUM(worker起動) 
○autovacuum worker 自動VACUUM(実処理) 
○archiver トランザクションログアーカイブ 
○stats collector 統計情報収集 
○wal sender レプリケーション(マスタ側) 
○wal receiver レプリケーション(スレーブ側)
archiver 
アーカイブ 
テーブル 
ファイル 
インデックス 
インデックス 
ファイル 
14 
WAL writer 
オンライン 
テーブル 
ファイル 
テーブル 
フWAL 
ァイル 
テーブル 
ファイル 
テーブルファイル 
ファイル 
© 2014 Metro Systems. 
PostgreSQLのアーキテクチャ(3) 
PostgreSQLのクエリ処理 
postmaster 
ppoposostsgtgtrgreresess 
WAL 
バッファ 
設定 
ファイル 
インデックス 
ファイル 
テーブル 
ファイル 
クライアント 
プppoosstgtgrreess 
ログラム 
テーブル 
フWAL 
ァイル 
background 
writer 
共有 
バッファ 
fork 
fork 
fork
15 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(1) 
階層構造 
データベースクラスタ($PGDATA) 
デフォルトテーブル空間(base) 
データベース 
テーブル 
インデックス 
グローバルテーブル空間(global) 
ユーザ定義テーブル空間(pg_tblspc) 
設定ファイル(*.conf) 
トランザクションログ(pg_xlog) 
コミットログ(pg_clog) 
サーバログ(pg_log) 
Etc.
16 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(2) 
データベースクラスタの内容 
% ls -l 
-rw------- 1 postgres postgres 4 7 3 2013 PG_VERSION 
drwx------ 7 postgres postgres 238 4 1 13:57 base/ 
drwx------ 42 postgres postgres 1428 4 1 13:58 global/ 
drwx------ 3 postgres postgres 102 7 3 2013 pg_clog/ 
-rw------- 1 postgres postgres 4219 7 3 2013 pg_hba.conf 
-rw------- 1 postgres postgres 1636 7 3 2013 pg_ident.conf 
drwx------ 6 postgres postgres 204 4 1 13:40 pg_log/ 
drwx------ 4 postgres postgres 136 7 3 2013 pg_multixact/ 
drwx------ 3 postgres postgres 102 3 31 17:43 pg_notify/ 
drwx------ 3 postgres postgres 102 4 1 14:05 pg_stat_tmp/ 
drwx------ 3 postgres postgres 102 3 31 18:34 pg_subtrans/ 
drwx------ 3 postgres postgres 102 4 1 13:55 pg_tblspc/ 
drwx------ 2 postgres postgres 68 7 3 2013 pg_twophase/ 
drwx------ 11 postgres postgres 374 4 1 13:55 pg_xlog/ 
-rw------- 1 postgres postgres 20337 3 31 17:45 postgresql.conf 
-rw------- 1 postgres postgres 36 3 31 17:43 postmaster.opts 
-rw------- 1 postgres postgres 50 3 31 17:43 postmaster.pid
17 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(3) 
テーブルファイルの構成 
テーブルデータは以下の三種類の「フォーク」で管理 
実データ 
FSM(Free Space Map:空き領域マップ) 
VM(Visibility Map:可視性マップ) 
ファイル名はpg_class.relflenode(OID)で管理 
実データは<relfle_node>(例11716) 
FSMは<relflenode>_fsm(例:11716_fsm) 
VMは<relflenode>_vm(例:11716_vm) 
oid2nameコマンドで名称取得可能 
ファイル・ブロックで分割して管理 
8KB単位のブロックで管理 
1GB単位でファイルを分割 
2つ目以降のファイルには11716.1, 11716.2のように枝番がふられる
18 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(3) 
テーブルファイルの構成 
postgres=# SELECT relname, oid, relfilenode 
postgres-# FROM pg_class 
postgres-# WHERE relkind = 'r' 
postgres-# AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public') 
postgres-# ORDER BY relname; 
relname | oid | relfilenode 
------------------+-------+------------- 
pgbench_accounts | 16390 | 16438 
pgbench_branches | 16393 | 16393 
pgbench_history | 16384 | 16384 
pgbench_tellers | 16387 | 16387 
(4 rows) 
通常テーブルのみ 
publicテーブルスペースにある 
(≒ユーザ定義の)もののみ 
oidと同じとは限らない 
→TRUNCATEやCLUSTERなどで変化 
$ cd $PGDATA/base/12403 
$ ls -l 16438* 
-rw------- 1 hanada staff 1073741824 6 12 16:25 16438 
-rw------- 1 hanada staff 269213696 6 12 16:25 16438.1 
-rw------- 1 hanada staff 352256 6 12 16:25 16438_fsm 
-rw------- 1 hanada staff 24576 6 12 16:25 16438_vm
19 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(4) 
テーブルファイルのブロック構成 
ページヘッダ 
アイテムポインタ 
空き領域 
ヒープタプル 
ブロック1 
ブロック2 
ブロック3 
ブロック4 
ブロック5 
ブロック6 
… 
ブロックN 
最大1GB
20 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(5) 
ヒープタプル 
論理的なレコードを構成する物理的な要素 
1レコード=Nタプル(N=更新世代数) 
PostgreSQLは、更新を削除+挿入で実現 
INSERT 
最新バージョンのタプルが追加される 
UPDATE 
更新対象バージョンのタプルに削除フラグが立つ 
最新バージョンのタプルが追加される 
DELETE 
削除対象バージョンのタプルに削除フラグが立つ 
「追記型」と 
呼ばれる所以
21 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(5) 
タプルの構造 
t_hoff 
ヘッダ 
t_choice 
NULL値 
ビットマップ 
列データ11 列データ2 … 列データN 
t_xmin 
t_xmax 
t_cid 
t_ctid 
ip_blkid 
ip_posid 
t_infomask2 
t_infomask 
t_hoff 
システム列で参照可能 
xmin,xmax,cmax,cmin,ctid 
可視性情報 
作成トランザクションID 
削除トランザクションID(未削除の場合は0) 
コマンドID 
タプル位置 
ブロック番号 
アイテムポインタ番号 
属性数+情報ビットマップ 
情報ビットマップ(NULL値の有無、行ロック情報など) 
列データオフセット
22 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(5) 
MVCCに基づくタプルの参照 
トランザクションA(XID=10) 
トランザクション開始 
INSERT(ID=1、VAL=10) 
COMMIT 
トランザクションC(XID=13) 
UPDATE(ID=1、VAL=20) 
SELECT→VAL=20 
COMMIT 
タプルの状態 
1/10[xmin:10 xmax:0] 
1/10[xmin:10 xmax:13] 
1/20[xmin:13 xmax:0] 
タプルは2つあるが 
レコードは1件
23 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(5) 
MVCCに基づくタプルの参照 
トランザクションA(XID=10) 
トランザクション開始 
INSERT(ID=1、VAL=10) 
COMMIT 
トランザクションC(XID=13) 
UPDATE(ID=1、VAL=20) 
SELECT→VAL=20 
COMMIT 
トランザクションB(XID=12) 
トランザクション開始 
SELECT→VAL=10 
SELECT→VAL=10 
SELECT→VAL=20
PostgreSQLのデータ構造(6) 
VACUUM 
VACUUMは、不要領域を回収し断片化を解消する処理 
不要領域とは「削除・更新によりどのトランザクションか 
らも参照されなくなった領域」のこと 
VACUUMをしないとテーブルファイルが肥大化 
VACUUMとVACUUM FULL 
この二つは全くの別物で、ほとんどのケースでは 
VACUUM FULLは不要 
24 
VACUUM FULLは可能な限りタプルを詰めるので、更 
新が発生すると 
それぞれのページに空き領域がある程度ある状態が 
PostgreSQLとしてはベストの状態 
© 2014 Metro Systems.
25 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(6) 
VACUUMの流れ(初期状態) 
ページヘッダ 
アイテムポインタ 
空き領域 
ヒープタプル
26 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(6) 
VACUUMの流れ(データ追加) 
ページヘッダ 
アイテムポインタ 
空き領域 
ヒープタプル
27 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(6) 
VACUUMの流れ(更新/削除による断片化) 
ページヘッダ 
アイテムポインタ 
空き領域 
ヒープタプル
28 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(6) 
VACUUMの流れ(VACUUM実施) 
ページヘッダ 
アイテムポインタ 
空き領域 
ヒープタプル
29 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(7) 
B-Treeインデックスのブロック構造 
テーブルと同様に8KBブロックで管理 
ブロック先頭にページヘッダ 
ページヘッダの後ろにアイテムポインタ配列 
ブロック末尾に管理情報(左右のページへのリンク 
など) 
管理情報の前にインデックスタプル 
テーブルと異なりFSMやVMは存在しない
メタページは、ルートページの位置等を保持 
ルートページと中間ページは、下位のページの最小 
値・最大値とそのページ番号を保持 
リーフページでは、キー値とタプル(レコードデー 
タ)へのポインタ(ブロック番号とオフセット)の 
ペアをインデックスタプルが保持 
30 
PostgreSQLのデータ構造(7) 
B-Treeインデックスのブロック構造 
メタページ、ルートページ、中間ページ、リーフペー 
ジからなる 
© 2014 Metro Systems.
31 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(7) 
B-Treeインデックスのブロック構造 
ルート(3) 
0〜100 
中間(5) 
0〜40 
中間(4) 
41〜100 
リーフ(9) 
0〜20 
リーフ(8) 
21〜35 
リーフ(6) 
36〜40 
リーフ(2) 
41〜60 
リーフ(7) 
61〜100 
メタ(1) 
11 22 33 14 25 36 
インデックスヒープ 
(テーブル) 
11 22 33 14 25 …3 9
32 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(7) 
PostgreSQLのB-Treeの特徴 
ヒープタプルごとにインデックスタプルができる 
更新を繰り返すとレコードが少なくてもインデックスが 
肥大化する 
VACUUMではインデックスからも不要領域を回収 
可視性判断材料(xmin/xmax)はヒープタプルにしかない 
自トランザクションが参照すべきヒープタプルを見つけ 
るために複数のインデックスタプルをスキャンする必要 
がある
33 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(7) 
PostgreSQLのB-Treeの特徴 
更新を繰り返すとインデックスが汚れる 
ツリー形状の不均衡やインデックスページ内の断片化 
解消にはREINDEX 
REINDEXは排他ロックを取り(そのインデックスを使 
うものだけだが)検索もブロック!対策は… 
通常のインデックスは、CREATE INDEX 
CONCURRENTLYで作成し、旧インデックスを削除 
後に新インデックスをリネーム 
主キーインデックスは、CREATE INDEX 
CONCURRENTLYで作成し、主キー制約を作り直す 
(ALTER TABLE DROP/ADD CONSTRAINTはトラ 
ンザクション内で!)
PostgreSQLのデータ構造(8) 
HOT(Heap Only Tuple) 
元タプルからリンクされたヒープタプルのみを追加し、イ 
ンデックスタプルは追加しない 
更新対象列にインデックスがなく、同一ページ内に空き領 
域がある場合のみ可能 
参照すべきインデックスタプルが減るので参照も高速に 
34 
© 2014 Metro Systems.
35 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(8) 
HOT(Heap Only Tuple) 
【HOT無効】【HOT有効】 
アイテム 
ポインタ 
アイテム 
ポインタ 
ヒープ 
タプル 
ヒープ 
タプル 
アイテム 
ポインタ 
インデックス 
タプル 
アイテム 
ポインタ 
インデックス 
タプル 
アイテム 
ポインタ 
アイテム 
ポインタ 
ヒープ 
タプル 
ヒープ 
タプル 
アイテム 
ポインタ 
インデックス 
タプル
36 
© 2014 Metro Systems. 
PostgreSQLのデータ構造(9) 
FILLFACTORによる空き領域確保 
INSERT時にFILLFACTOR%以上は埋めない 
デフォルトは100% 
ALTER TABLEで変更可能、ただし現在の空き領域が変 
わる訳ではない 
ページ内に空き領域があると… 
更新時に同一ページに新バージョンタプルを配置しやす 
い→HOTになりやすい→インデックスが汚れにくい 
格納効率が下がるので、ディスク領域はより多く使う
37 
© 2014 Metro Systems. 
性能監視 
基本的な監視項目 
クエリチューニング 
便利な外部ツール
38 
© 2014 Metro Systems. 
基本的な監視項目(1) 
障害やパフォーマンス劣化が起きてからでは遅い! 
運用開始前からどのような項目を監視するか決めておく 
サービスレベル(目標)を事前に定義 
定常的な監視で許容範囲のうちに対策を! 
監視によるオーバーヘッドを見込んだサイジング 
データベース単体で性能が出ても、いざという時に対策が打てない 
のでは実用にはならない! 
アプリケーションやネットワークも含めて監視しましょう 
「監視するだけ」にならないように、フィードバックサイクルを作る 
「いつの間にか遅くなっていた」とならないように
39 
© 2014 Metro Systems. 
基本的な監視項目(2) 
OSレベルの監視 
CPU 
SQLパース 
プラン作成 
フィルタリング 
ソート 
VACUUM 
メモリ 
ソート 
ハッシュ結合 
VACUUM 
プロセス 
対象セッション 
自動VACUUM 
ディスクI/O 
テーブルスキャン 
一時ファイル 
WAL書き込み 
VACUUM 
ディスク使用量 
データベースサイズ 
WALサイズ 
アーカイブWALサイズ 
一時ファイルサイズ 
ネットワークI/O 
結果データ転送 
レプリケーション
40 
© 2014 Metro Systems. 
基本的な監視項目(3) 
PostgreSQLレベルの監視 
クエリのパフォーマンス 
pg_stat_activityビュー 
セッション数(接続/切断頻度なども) 
クエリ所要時間 
pg_stat_all_(tables|indexes)ビュー 
テーブルやインデックスへのアクセス数や方式(全件/インデックス) 
VACUUM/ANALYZE状況 
pg_statio_all_(tables|indexes)ビュー 
テーブルやインデックスのキャッシュヒット率 
pg_xlog_location()/pg_xlog_insert_location()/pg_xlog_location_dif() 
関数 
WAL書き込み量
41 
© 2014 Metro Systems. 
基本的な監視項目(3) 
PostgreSQLレベルの監視(続き) 
その他の処理のパフォーマンス 
サーバログ 
チェックポイントや自動VACUUMの頻度・所要時間 
WALアーカイブ 
pg_stat_replicationビュー 
レプリケーション遅延 
ディスク領域 
pg_(database|table|relation|indexes)_size()関数 
データ領域(データベース/テーブル空間/テーブルやインデックス) 
duコマンド 
オンラインWAL領域・アーカイブWAL領域 
サーバログ 
ログ監視(FATAL/PANIC/ERRORが出ていないか?)
42 
便利な外部ツール 
pg_statsinfo/pg_stat_reporter 
定期的に統計情報のスナプショットを取得しグラフィカルに表示 
http://pgstatsinfo.projects.pgfoundry.org/index_ja.html 
Zabbix+pg_monz 
pg_monzはZabbixでPostgreSQLを監視するためのテンプレート 
http://pg-monz.github.io/pg_monz/ 
© 2014 Metro Systems. 
Hinemos 
統合運用管理ソフト 
http://www.hinemos.info
43 
© 2014 Metro Systems. 
便利な外部ツール 
pg_statsinfo/pg_stat_reporterのサンプル画面 
CPU使用率とチェックポイントの関係
44 
© 2014 Metro Systems. 
便利な外部ツール 
pg_statsinfo/pg_stat_reporterのサンプル画面 
WAL書き出し量とチェックポイントの関係
45 
© 2014 Metro Systems. 
パフォーマンスチューニング 
パラメータチューニング 
クエリチューニング 
便利な外部ツール
SQL解析、ソート処理、暗号化、Etc. 
ディスクI/O処理 
データファイル読み書き、WAL記録、VACUUM、ログ記録、Etc. 
ロック競合 
同時アクセス、デッドロック、Etc. 
ネットワーク転送 
クエリ結果返却、レプリケーション、Etc. 
どこかの要因がボトルネックになり性能が決まる 
46 
パフォーマンスの基本(1) 
パフォーマンスとは? 
業務モデルによって詳細は異なるが「単位時間でさばける処理量」 
パフォーマンスを決定する要因は様々 
CPU処理 
© 2014 Metro Systems.
47 
© 2014 Metro Systems. 
パフォーマンスの基本(2) 
パフォーマンスをあげるには? 
クエリ所要時間(レスポンス)を短縮する 
I/O量を下げる 
CPU処理を減らす 
メモリを増やす 
検索対象データ量を減らす 
結果データ量を減らす 
並列度を上げる 
ロックの強度を下げる 
ロックの期間を短くする 
CPUを増やす
48 
© 2014 Metro Systems. 
パラメータチューニング(1) 
構築したら変えましょう!のパラメータ 
shared_bufers 
テーブルやインデックスの内容をPostgreSQLがキャッシュする量 
実メモリの25%程度に設定 
work_mem 
ソート処理やハッシュ結合を高速化するが、プロセス単位の設定なのであ 
まり大きくするとスワップする 
バッチセッションやバッチユーザのみ別に設定するのも一案 
postgres=# ALTER USER batch SET work_mem = '100MB'; 
ALTER ROLE 
postgres=# c - batch 
You are now connected to database "postgres" as user "batch". 
postgres=> show work_mem; 
work_mem 
---------- 
100MB 
(1 row)
49 
© 2014 Metro Systems. 
パラメータチューニング(2) 
構築したら変えましょう!のパラメータ(つづき) 
checkpoint_segments/checkpoint_timeout 
更新量が多いシステムではデフォルトの3/5minは小さいので、クラッシュ 
リカバリの時間との兼ね合いで設定 
大きくするとpg_xlogディレクトリが肥大化する 
小さすぎると、このようなログが出ます 
LOG: checkpoints are occurring too frequently (2 seconds apart) 
HINT: Consider increasing the configuration parameter "checkpoint_segments".
50 
© 2014 Metro Systems. 
パラメータチューニング(4) 
様子を見て変えましょう!のパラメータ 
random_page_cost 
値を小さくするとインデックススキャンが選択されやすくなる 
SSDや高速なストレージを使用している場合は小さくしてみるとよいかも 
efective_cache_size 
OSのバッファキャッシュも含めたキャッシュサイズで、増やすとインデッ 
クススキャンになりやすい 
実メモリの25%〜50%程度に設定 
「速くする設定」も重要ですが、 
「何が起きているか知るための設定」 
の方が重要です!
51 
© 2014 Metro Systems. 
パラメータチューニング(3) 
構築したら変えましょう!のパラメータ(つづき) 
wal_level 
運用要件上許される最小のレベルに 
wal_bufers 
デフォルトの「-1」だとshared_bufersの1/32を使用 
大きくしすぎるとコミット時の待ちが長くなる
52 
© 2014 Metro Systems. 
クエリチューニング 
実際のチューニングは… 
最近、画面の表示が遅くなってきた 
調べたらデータベースアクセスが遅いようだ 
一覧画面の表示に時間がかかっている 
どのSQLが遅いんだろう? 
分からない…
53 
EXPLAINの見方(1) 
EXPLAINとは 
PostgreSQLがクエリをどのように実行するか/したかを知るためのツール 
PostgreSQLは様々なクエリを以下のような「プランノード」をツリー上に 
組み合わせて実現 
スキャン 
Seq Scan/Index Scan/Index Only Scan/Bitmap Heap Scan/Etc. 
結合 
Nested Loop/Merge Join/Hash Join 
その他 
Sort/Append/Aggregate/Limit/Etc. 
各プランノード毎に以下の情報を出力 
プラン種別・推定行数・推定コスト・推定レコード長 
所要時間・ヒット行数・繰り返し回数(ANALYZE指定時のみ) 
© 2014 Metro Systems.
54 
© 2014 Metro Systems. 
EXPLAINの見方(2) 
実行計画の例 
小さいテーブル(1ブロック) 
postgres=# explain select * from pgbench_branches where bid < 3; 
QUERY PLAN 
------------------------------------------------------------------ 
Seq Scan on pgbench_branches (cost=0.00..1.06 rows=2 width=364) 
Filter: (bid < 3) 
(2 rows) 
肥大化したテーブル(167ブロック) 
postgres=# explain select * from pgbench_branches where bid < 3; 
QUERY PLAN 
----------------------------------------------------------------------------------- 
- 
Bitmap Heap Scan on pgbench_branches (cost=4.27..11.67 rows=2 width=364) 
Recheck Cond: (bid < 3) 
-> Bitmap Index Scan on pgbench_branches_pkey (cost=0.00..4.27 rows=2 width=0) 
Index Cond: (bid < 3) 
(4 rows)
55 
© 2014 Metro Systems. 
EXPLAINの見方(3) 
実行計画ノードの例 
スキャン 
Seq Scan:先頭ブロックから順にヒープ全体をスキャン 
大きいテーブルでは致命的にディスクI/Oが出る 
Index Scan:インデックスに基づいてヒープをスキャン 
ランダムアクセスになる 
大量にヒットすると逆に遅い 
Index Only Scan:インデックスのみを用いてスキャン 
こまめにVACUUMをしないと選ばれない 
Bitmap Index Scan:複数のインデックスから作成したビットマッ 
プに基づいてヒープをスキャン 
ビットマップがメモリに収まれば高速
56 
© 2014 Metro Systems. 
EXPLAINの見方(3) 
実行計画ノードの例 
結合 
Nest Loop:Outer1行につきInner全体をスキャンし結合 
Inner側の件数が多いと極端に遅い 
Merge Join:結合キーでソートされた結果同士を結合 
事前にソートする必要があるが、大きい結果同士でもある程度高 
速 
Hash Join:Innerの結合キーでハッシュテーブルを作成し、それ 
に基づいてOuterをスキャン 
ハッシュテーブルがメモリに収まればかなり高速
57 
© 2014 Metro Systems. 
EXPLAINの見方(3) 
実行計画ノードの例 
その他 
Sort:結果を並べ替え 
結果が多いと一時ファイルを使い始める 
大量データのソートが必要なケースではwork_memを上げる 
Limit:結果の行方向の部分集合を取得 
最終的に必要な件数が少なくて済む場合があり結果セットごとに 
性能が変わり易い 
Materialize:結果セットを一時領域に保存 
結果セットがwork_mem以上なら一時ファイルに書き出す
58 
© 2014 Metro Systems. 
EXPLAINの見方(4) 
EXPLAINでの注意点 
見積もり件数 
見積もり件数と実際の件数に乖離がある場合は、最適でない実行 
計画が選ばれがち 
統計情報は最新に 
定期的にANALYZEを実行して統計情報を更新 
自動VACUUMで十分か、確認を! 
大量更新バッチの後は手動ANALYZEを! 
動作中のアプリの実行計画はauto_explainで 
contribモジュールのauto_explainを用いると、サーバログに実行 
されたSQLの実行計画を出力可能 
負荷が高くなるので、経過時間設定やon/ofの切り替えなどでな 
るべく出力対象を限定的に
59 
EXPLAINの見方(5) 
詳しくは 
「生き残るデータベース管理者/アプリケーション開発者のための 
PostgreSQL SQLチューニング入門〜Explaining Explain〜」 
OSC 2012 Tokyo/Springにて株式会社アシストの田中氏が講演 
http://www.postgresql.jp/events/osc12tk_spring_folder 
© 2014 Metro Systems.
60 
© 2014 Metro Systems. 
便利な外部ツール 
pg_dbms_stats 
PostgreSQLの持つ統計情報を管理 
統計情報を固定して実行計画の変化を抑止 
本番環境の統計情報を検証環境に移植してチューニング 
http://sourceforge.jp/projects/pgdbmsstats/ 
pg_hint_plan 
PostgreSQLでヒント句を利用可能にする 
http://sourceforge.jp/projects/pghintplan/ 
pgAdmin-Ⅲ 
実行計画をグラフィカルに表示 
クエリ書き換えのトライ&エラーに 
http://www.pgadmin.org
61 
© 2014 Metro Systems. 
ディスクI/O分散 
ディスクI/OはRDBMSの最大の敵 
PostgreSQLで発生するディスクI/O 
データファイル(チェックポイント、VACUUM) 
WAL(更新処理、VACUUM、CHECKPOINT) 
バックアップ 
ディスクI/Oボトルネックであれば、分散化で高速化 
オンラインWALを分離 
サーバ停止状態で$PGDATA/pg_xlogを別ボリュームに移動しシ 
ンボリックリンクでつなぐ 
テーブルスペースを分離 
アクセスの競合するテーブルを異なるテーブルスペースに配置 
注意点 
バックアップ時に$PGDATA以外の場所を取り忘れないように! 
pg_basebackupを使えば、全体を容易にバックアップ可能
62 
参考資料 
PostgreSQL文書 
基本的には正しい情報はここから! 
http://www.postgresql.jp/document/9.3/html/index.html 
PostgreSQL全機能バイブル 
非常に細かく内部構造や詳細動作が記述されています 
鈴木啓修・技術評論社 
Let's Postgres 
日本語のPostgreSQL技術情報ポータル 
http://lets.postgresql.jp 
PostgreSQL Internals 
体系的にまとまっているのでアーキテクチャ概要などの理解に 
http://www.postgresqlinternals.org/ 
© 2014 Metro Systems.
63 
© 2014 Metro Systems. 
最近の開発動向(1) 
次のバージョンの9.4は… 
今秋リリースの見込み 
現在、ベータテスト中→ガンガン試してください! 
個人的には、GINインデックス高速化やJSONB(バイ 
ナリJSON)が熱いかと 
6/19に本イベントで講演された宗近さんの講演資料が 
詳しいです 
http://www.slideshare.net/munetika/dbts-osaka2014- 
pg94
64 
© 2014 Metro Systems. 
最近の開発動向(2) 
その次のバージョンの9.5は… 
6/15に開発サイクルが始まりました 
自律トランザクション 
B-Treeインデックス構築高速化 
共有バッファのNUMA対応 
共有バッファのHibernation 
外部テーブルで継承や結合をサポート←宣伝
ご清聴ありがとうございました。 
65 
© 2014 Metro Systems. 
■お問い合わせ■ 
株式会社メトロシステムズ 
花田 茂 
Mail: hanada@metrosystems.co.jp 
Twitter: @s87

Weitere ähnliche Inhalte

Was ist angesagt?

iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方歩 柴田
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari KatsumataInsight Technology, Inc.
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUCAkio Ishida
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
OSC北海道2014_JPUG資料
OSC北海道2014_JPUG資料OSC北海道2014_JPUG資料
OSC北海道2014_JPUG資料Chika SATO
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)NTT DATA Technology & Innovation
 
PostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようPostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようYukiya Hayashi
 

Was ist angesagt? (20)

iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUC
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
OSC北海道2014_JPUG資料
OSC北海道2014_JPUG資料OSC北海道2014_JPUG資料
OSC北海道2014_JPUG資料
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
PostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようPostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しよう
 

Ähnlich wie OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014

OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~Shigeru Hanada
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張Shigeru Hanada
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubToshi Harada
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]Hideo Takagi
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャazuma satoshi
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...Insight Technology, Inc.
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)Uptime Technologies LLC (JP)
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブルShigeru Hanada
 
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Keisuke Fujikawa
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)Kosuke Kida
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料kasaharatt
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012Shigeru Hanada
 
Extending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 JapanExtending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 JapanShigeru Hanada
 

Ähnlich wie OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014 (20)

OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
 
PostgreSQL安定運用のコツ2009 @hbstudy#5
PostgreSQL安定運用のコツ2009 @hbstudy#5PostgreSQL安定運用のコツ2009 @hbstudy#5
PostgreSQL安定運用のコツ2009 @hbstudy#5
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブル
 
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
 
Extending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 JapanExtending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 Japan
 

Mehr von Shigeru Hanada

PostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaPostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaShigeru Hanada
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017Shigeru Hanada
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsShigeru Hanada
 
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会Shigeru Hanada
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会Shigeru Hanada
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaShigeru Hanada
 
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会Shigeru Hanada
 
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
 

Mehr von Shigeru Hanada (8)

PostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaPostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper Enhancements
 
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
 
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
 
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
 

Kürzlich hochgeladen

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Kürzlich hochgeladen (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014

  • 1. OSS-DB Gold 技術解説セミナー 1 © 2014 Metro Systems. db tech showcase 東京 2014 2014/11/12 株式会社メトロシステムズ  花田 茂
  • 2. 2 © 2014 Metro Systems. 自己紹介 氏名 花田 茂(はなだ しげる) 所属 株式会社メトロシステムズ(東京・池袋・サンシャイン60) 略歴 1999年:株式会社メトロシステムズに入社 2003年:オープンソースデータベースのR&Dを担当 2010年:PostgreSQLの開発に参加(主に外部データ連携) 2013年:OSS-DB Gold取得 現在: OSS関連の構築やコンサルティング、トレーニング PostgreSQL開発 主に外部テーブル/FDWまわり
  • 3. 3 © 2014 Metro Systems. 本セミナーの流れ 運用管理の基本 PostgreSQLのアーキテクチャ データ構造 性能監視 基本的な監視項目 便利な外部ツール パフォーマンスチューニング パラメータチューニング クエリチューニング 便利な外部ツール
  • 4. 4 OSS-DB試験の紹介 © 2014 Metro Systems. 試験の概要 PostgreSQLの特徴
  • 5. 5 OSS-DB試験とは オープンソースデータベース(OSS-DB)に関する技術 と知識を認定するIT技術者認定です データベースシステムの設計・導入・運用ができる技術者 © 2014 Metro Systems. 大規模データベースシステムの 改善・運用管理・コンサルティングができる技術者 Linux技術者認定制度のLPICと同じく、 LPI-Japanが実施
  • 6. 6 © 2014 Metro Systems. OSS-DB Gold試験の出題範囲 運用管理(30%) データベースサーバ構築 運用管理コマンド全般 データベースの構造 ホットスタンバイ運用 性能監視(30%) アクセス統計情報 テーブル/カラム統計情報 クエリ実行計画 スロークエリの検出 付属ツールによる解析 パフォーマンスチューニング(20%) 性能に関係するパラメータ チューニングの実施 障害対応(20%) 起こりうる障害のパターン 破損クラスタ復旧 ホットスタンバイ復旧 試験時間:90分※ 問題数:30問 合格点:70点 ※アンケート時間等を含む
  • 7. 7 OSS-DB試験の注意事項 基本となるPostgreSQLバージョンは「9.0」以降 一部、新しい機能に関する問題も出題 2014年11月時点の最新バージョンは「9.3.5」 間もなく9.4がリリース!? 最新の試験範囲はWebで確認! http://www.oss-db.jp/outline/examarea.shtml OSに依存しない内容だが、表記はLinuxベース シェルのコマンドプロンプトは「$」 ディレクトリ区切り文字は「¥」や「」でなく「/」 © 2014 Metro Systems.
  • 8. 8 © 2014 Metro Systems. 運用管理の基本 PostgreSQLのアーキテクチャ PostgreSQLのデータ構造
  • 9. 9 © 2014 Metro Systems. PostgreSQLのアーキテクチャ(1) アーキテクチャにおける特徴 多数のクライアントに高性能を提供 マルチプロセス構成(スレッド未使用) 共有メモリによるデータ共有とバッファリング 追記型によるMVCC 賢くクエリを実行 コストベースオプティマイザ 各種インデックス(B-TreeだけでなくGINやGiSTなど) 任意のタイミングまでのリカバリ WALによるリカバリ(クラッシュリカバリやPITR) 柔軟な構成が可能 同期・非同期を選べるレプリケーション スタンバイからのオンラインバックアップ取得
  • 10. 10 © 2014 Metro Systems. PostgreSQLのアーキテクチャ(2) PostgreSQLを構成する要素 ファイルプロセス
  • 11. 11 © 2014 Metro Systems. PostgreSQLのアーキテクチャ(2) PostgreSQLを構成する要素 ファイルプロセス ○設定ファイル ▲サーバ設定 ▲クライアント認証設定 ○データファイル ▲テーブル ◇実データ ◇空き領域マップ ◇可視性マップ ▲インデックス ○ログファイル ▲サーバログ ▲トランザクションログ ◇オンライン ◇アーカイブ ▲コミットログ
  • 12. 12 © 2014 Metro Systems. PostgreSQLのアーキテクチャ(2) PostgreSQLを構成する要素 ファイルプロセス ○共有メモリ ▲セッション情報 ▲プロセス情報 ▲トランザクション情報 ▲共有バッファ ▲WALバッファ ○ヒープメモリ ▲プロセスコード ▲スタック ▲ソート領域 ▲一時バッファ
  • 13. 13 © 2014 Metro Systems. PostgreSQLのアーキテクチャ(2) PostgreSQLを構成する要素 ファイルプロセス ○postmaster リスナ ○postgres クエリ実行等、クライアント対応 ○logger サーバログ記録 ○checkpointer チェックポイント実行(9.2〜) ○writer ダーティバッファのフラッシュ ○wal writer トランザクションログ書き込み ○autovacuum launcher 自動VACUUM(worker起動) ○autovacuum worker 自動VACUUM(実処理) ○archiver トランザクションログアーカイブ ○stats collector 統計情報収集 ○wal sender レプリケーション(マスタ側) ○wal receiver レプリケーション(スレーブ側)
  • 14. archiver アーカイブ テーブル ファイル インデックス インデックス ファイル 14 WAL writer オンライン テーブル ファイル テーブル フWAL ァイル テーブル ファイル テーブルファイル ファイル © 2014 Metro Systems. PostgreSQLのアーキテクチャ(3) PostgreSQLのクエリ処理 postmaster ppoposostsgtgtrgreresess WAL バッファ 設定 ファイル インデックス ファイル テーブル ファイル クライアント プppoosstgtgrreess ログラム テーブル フWAL ァイル background writer 共有 バッファ fork fork fork
  • 15. 15 © 2014 Metro Systems. PostgreSQLのデータ構造(1) 階層構造 データベースクラスタ($PGDATA) デフォルトテーブル空間(base) データベース テーブル インデックス グローバルテーブル空間(global) ユーザ定義テーブル空間(pg_tblspc) 設定ファイル(*.conf) トランザクションログ(pg_xlog) コミットログ(pg_clog) サーバログ(pg_log) Etc.
  • 16. 16 © 2014 Metro Systems. PostgreSQLのデータ構造(2) データベースクラスタの内容 % ls -l -rw------- 1 postgres postgres 4 7 3 2013 PG_VERSION drwx------ 7 postgres postgres 238 4 1 13:57 base/ drwx------ 42 postgres postgres 1428 4 1 13:58 global/ drwx------ 3 postgres postgres 102 7 3 2013 pg_clog/ -rw------- 1 postgres postgres 4219 7 3 2013 pg_hba.conf -rw------- 1 postgres postgres 1636 7 3 2013 pg_ident.conf drwx------ 6 postgres postgres 204 4 1 13:40 pg_log/ drwx------ 4 postgres postgres 136 7 3 2013 pg_multixact/ drwx------ 3 postgres postgres 102 3 31 17:43 pg_notify/ drwx------ 3 postgres postgres 102 4 1 14:05 pg_stat_tmp/ drwx------ 3 postgres postgres 102 3 31 18:34 pg_subtrans/ drwx------ 3 postgres postgres 102 4 1 13:55 pg_tblspc/ drwx------ 2 postgres postgres 68 7 3 2013 pg_twophase/ drwx------ 11 postgres postgres 374 4 1 13:55 pg_xlog/ -rw------- 1 postgres postgres 20337 3 31 17:45 postgresql.conf -rw------- 1 postgres postgres 36 3 31 17:43 postmaster.opts -rw------- 1 postgres postgres 50 3 31 17:43 postmaster.pid
  • 17. 17 © 2014 Metro Systems. PostgreSQLのデータ構造(3) テーブルファイルの構成 テーブルデータは以下の三種類の「フォーク」で管理 実データ FSM(Free Space Map:空き領域マップ) VM(Visibility Map:可視性マップ) ファイル名はpg_class.relflenode(OID)で管理 実データは<relfle_node>(例11716) FSMは<relflenode>_fsm(例:11716_fsm) VMは<relflenode>_vm(例:11716_vm) oid2nameコマンドで名称取得可能 ファイル・ブロックで分割して管理 8KB単位のブロックで管理 1GB単位でファイルを分割 2つ目以降のファイルには11716.1, 11716.2のように枝番がふられる
  • 18. 18 © 2014 Metro Systems. PostgreSQLのデータ構造(3) テーブルファイルの構成 postgres=# SELECT relname, oid, relfilenode postgres-# FROM pg_class postgres-# WHERE relkind = 'r' postgres-# AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public') postgres-# ORDER BY relname; relname | oid | relfilenode ------------------+-------+------------- pgbench_accounts | 16390 | 16438 pgbench_branches | 16393 | 16393 pgbench_history | 16384 | 16384 pgbench_tellers | 16387 | 16387 (4 rows) 通常テーブルのみ publicテーブルスペースにある (≒ユーザ定義の)もののみ oidと同じとは限らない →TRUNCATEやCLUSTERなどで変化 $ cd $PGDATA/base/12403 $ ls -l 16438* -rw------- 1 hanada staff 1073741824 6 12 16:25 16438 -rw------- 1 hanada staff 269213696 6 12 16:25 16438.1 -rw------- 1 hanada staff 352256 6 12 16:25 16438_fsm -rw------- 1 hanada staff 24576 6 12 16:25 16438_vm
  • 19. 19 © 2014 Metro Systems. PostgreSQLのデータ構造(4) テーブルファイルのブロック構成 ページヘッダ アイテムポインタ 空き領域 ヒープタプル ブロック1 ブロック2 ブロック3 ブロック4 ブロック5 ブロック6 … ブロックN 最大1GB
  • 20. 20 © 2014 Metro Systems. PostgreSQLのデータ構造(5) ヒープタプル 論理的なレコードを構成する物理的な要素 1レコード=Nタプル(N=更新世代数) PostgreSQLは、更新を削除+挿入で実現 INSERT 最新バージョンのタプルが追加される UPDATE 更新対象バージョンのタプルに削除フラグが立つ 最新バージョンのタプルが追加される DELETE 削除対象バージョンのタプルに削除フラグが立つ 「追記型」と 呼ばれる所以
  • 21. 21 © 2014 Metro Systems. PostgreSQLのデータ構造(5) タプルの構造 t_hoff ヘッダ t_choice NULL値 ビットマップ 列データ11 列データ2 … 列データN t_xmin t_xmax t_cid t_ctid ip_blkid ip_posid t_infomask2 t_infomask t_hoff システム列で参照可能 xmin,xmax,cmax,cmin,ctid 可視性情報 作成トランザクションID 削除トランザクションID(未削除の場合は0) コマンドID タプル位置 ブロック番号 アイテムポインタ番号 属性数+情報ビットマップ 情報ビットマップ(NULL値の有無、行ロック情報など) 列データオフセット
  • 22. 22 © 2014 Metro Systems. PostgreSQLのデータ構造(5) MVCCに基づくタプルの参照 トランザクションA(XID=10) トランザクション開始 INSERT(ID=1、VAL=10) COMMIT トランザクションC(XID=13) UPDATE(ID=1、VAL=20) SELECT→VAL=20 COMMIT タプルの状態 1/10[xmin:10 xmax:0] 1/10[xmin:10 xmax:13] 1/20[xmin:13 xmax:0] タプルは2つあるが レコードは1件
  • 23. 23 © 2014 Metro Systems. PostgreSQLのデータ構造(5) MVCCに基づくタプルの参照 トランザクションA(XID=10) トランザクション開始 INSERT(ID=1、VAL=10) COMMIT トランザクションC(XID=13) UPDATE(ID=1、VAL=20) SELECT→VAL=20 COMMIT トランザクションB(XID=12) トランザクション開始 SELECT→VAL=10 SELECT→VAL=10 SELECT→VAL=20
  • 24. PostgreSQLのデータ構造(6) VACUUM VACUUMは、不要領域を回収し断片化を解消する処理 不要領域とは「削除・更新によりどのトランザクションか らも参照されなくなった領域」のこと VACUUMをしないとテーブルファイルが肥大化 VACUUMとVACUUM FULL この二つは全くの別物で、ほとんどのケースでは VACUUM FULLは不要 24 VACUUM FULLは可能な限りタプルを詰めるので、更 新が発生すると それぞれのページに空き領域がある程度ある状態が PostgreSQLとしてはベストの状態 © 2014 Metro Systems.
  • 25. 25 © 2014 Metro Systems. PostgreSQLのデータ構造(6) VACUUMの流れ(初期状態) ページヘッダ アイテムポインタ 空き領域 ヒープタプル
  • 26. 26 © 2014 Metro Systems. PostgreSQLのデータ構造(6) VACUUMの流れ(データ追加) ページヘッダ アイテムポインタ 空き領域 ヒープタプル
  • 27. 27 © 2014 Metro Systems. PostgreSQLのデータ構造(6) VACUUMの流れ(更新/削除による断片化) ページヘッダ アイテムポインタ 空き領域 ヒープタプル
  • 28. 28 © 2014 Metro Systems. PostgreSQLのデータ構造(6) VACUUMの流れ(VACUUM実施) ページヘッダ アイテムポインタ 空き領域 ヒープタプル
  • 29. 29 © 2014 Metro Systems. PostgreSQLのデータ構造(7) B-Treeインデックスのブロック構造 テーブルと同様に8KBブロックで管理 ブロック先頭にページヘッダ ページヘッダの後ろにアイテムポインタ配列 ブロック末尾に管理情報(左右のページへのリンク など) 管理情報の前にインデックスタプル テーブルと異なりFSMやVMは存在しない
  • 30. メタページは、ルートページの位置等を保持 ルートページと中間ページは、下位のページの最小 値・最大値とそのページ番号を保持 リーフページでは、キー値とタプル(レコードデー タ)へのポインタ(ブロック番号とオフセット)の ペアをインデックスタプルが保持 30 PostgreSQLのデータ構造(7) B-Treeインデックスのブロック構造 メタページ、ルートページ、中間ページ、リーフペー ジからなる © 2014 Metro Systems.
  • 31. 31 © 2014 Metro Systems. PostgreSQLのデータ構造(7) B-Treeインデックスのブロック構造 ルート(3) 0〜100 中間(5) 0〜40 中間(4) 41〜100 リーフ(9) 0〜20 リーフ(8) 21〜35 リーフ(6) 36〜40 リーフ(2) 41〜60 リーフ(7) 61〜100 メタ(1) 11 22 33 14 25 36 インデックスヒープ (テーブル) 11 22 33 14 25 …3 9
  • 32. 32 © 2014 Metro Systems. PostgreSQLのデータ構造(7) PostgreSQLのB-Treeの特徴 ヒープタプルごとにインデックスタプルができる 更新を繰り返すとレコードが少なくてもインデックスが 肥大化する VACUUMではインデックスからも不要領域を回収 可視性判断材料(xmin/xmax)はヒープタプルにしかない 自トランザクションが参照すべきヒープタプルを見つけ るために複数のインデックスタプルをスキャンする必要 がある
  • 33. 33 © 2014 Metro Systems. PostgreSQLのデータ構造(7) PostgreSQLのB-Treeの特徴 更新を繰り返すとインデックスが汚れる ツリー形状の不均衡やインデックスページ内の断片化 解消にはREINDEX REINDEXは排他ロックを取り(そのインデックスを使 うものだけだが)検索もブロック!対策は… 通常のインデックスは、CREATE INDEX CONCURRENTLYで作成し、旧インデックスを削除 後に新インデックスをリネーム 主キーインデックスは、CREATE INDEX CONCURRENTLYで作成し、主キー制約を作り直す (ALTER TABLE DROP/ADD CONSTRAINTはトラ ンザクション内で!)
  • 34. PostgreSQLのデータ構造(8) HOT(Heap Only Tuple) 元タプルからリンクされたヒープタプルのみを追加し、イ ンデックスタプルは追加しない 更新対象列にインデックスがなく、同一ページ内に空き領 域がある場合のみ可能 参照すべきインデックスタプルが減るので参照も高速に 34 © 2014 Metro Systems.
  • 35. 35 © 2014 Metro Systems. PostgreSQLのデータ構造(8) HOT(Heap Only Tuple) 【HOT無効】【HOT有効】 アイテム ポインタ アイテム ポインタ ヒープ タプル ヒープ タプル アイテム ポインタ インデックス タプル アイテム ポインタ インデックス タプル アイテム ポインタ アイテム ポインタ ヒープ タプル ヒープ タプル アイテム ポインタ インデックス タプル
  • 36. 36 © 2014 Metro Systems. PostgreSQLのデータ構造(9) FILLFACTORによる空き領域確保 INSERT時にFILLFACTOR%以上は埋めない デフォルトは100% ALTER TABLEで変更可能、ただし現在の空き領域が変 わる訳ではない ページ内に空き領域があると… 更新時に同一ページに新バージョンタプルを配置しやす い→HOTになりやすい→インデックスが汚れにくい 格納効率が下がるので、ディスク領域はより多く使う
  • 37. 37 © 2014 Metro Systems. 性能監視 基本的な監視項目 クエリチューニング 便利な外部ツール
  • 38. 38 © 2014 Metro Systems. 基本的な監視項目(1) 障害やパフォーマンス劣化が起きてからでは遅い! 運用開始前からどのような項目を監視するか決めておく サービスレベル(目標)を事前に定義 定常的な監視で許容範囲のうちに対策を! 監視によるオーバーヘッドを見込んだサイジング データベース単体で性能が出ても、いざという時に対策が打てない のでは実用にはならない! アプリケーションやネットワークも含めて監視しましょう 「監視するだけ」にならないように、フィードバックサイクルを作る 「いつの間にか遅くなっていた」とならないように
  • 39. 39 © 2014 Metro Systems. 基本的な監視項目(2) OSレベルの監視 CPU SQLパース プラン作成 フィルタリング ソート VACUUM メモリ ソート ハッシュ結合 VACUUM プロセス 対象セッション 自動VACUUM ディスクI/O テーブルスキャン 一時ファイル WAL書き込み VACUUM ディスク使用量 データベースサイズ WALサイズ アーカイブWALサイズ 一時ファイルサイズ ネットワークI/O 結果データ転送 レプリケーション
  • 40. 40 © 2014 Metro Systems. 基本的な監視項目(3) PostgreSQLレベルの監視 クエリのパフォーマンス pg_stat_activityビュー セッション数(接続/切断頻度なども) クエリ所要時間 pg_stat_all_(tables|indexes)ビュー テーブルやインデックスへのアクセス数や方式(全件/インデックス) VACUUM/ANALYZE状況 pg_statio_all_(tables|indexes)ビュー テーブルやインデックスのキャッシュヒット率 pg_xlog_location()/pg_xlog_insert_location()/pg_xlog_location_dif() 関数 WAL書き込み量
  • 41. 41 © 2014 Metro Systems. 基本的な監視項目(3) PostgreSQLレベルの監視(続き) その他の処理のパフォーマンス サーバログ チェックポイントや自動VACUUMの頻度・所要時間 WALアーカイブ pg_stat_replicationビュー レプリケーション遅延 ディスク領域 pg_(database|table|relation|indexes)_size()関数 データ領域(データベース/テーブル空間/テーブルやインデックス) duコマンド オンラインWAL領域・アーカイブWAL領域 サーバログ ログ監視(FATAL/PANIC/ERRORが出ていないか?)
  • 42. 42 便利な外部ツール pg_statsinfo/pg_stat_reporter 定期的に統計情報のスナプショットを取得しグラフィカルに表示 http://pgstatsinfo.projects.pgfoundry.org/index_ja.html Zabbix+pg_monz pg_monzはZabbixでPostgreSQLを監視するためのテンプレート http://pg-monz.github.io/pg_monz/ © 2014 Metro Systems. Hinemos 統合運用管理ソフト http://www.hinemos.info
  • 43. 43 © 2014 Metro Systems. 便利な外部ツール pg_statsinfo/pg_stat_reporterのサンプル画面 CPU使用率とチェックポイントの関係
  • 44. 44 © 2014 Metro Systems. 便利な外部ツール pg_statsinfo/pg_stat_reporterのサンプル画面 WAL書き出し量とチェックポイントの関係
  • 45. 45 © 2014 Metro Systems. パフォーマンスチューニング パラメータチューニング クエリチューニング 便利な外部ツール
  • 46. SQL解析、ソート処理、暗号化、Etc. ディスクI/O処理 データファイル読み書き、WAL記録、VACUUM、ログ記録、Etc. ロック競合 同時アクセス、デッドロック、Etc. ネットワーク転送 クエリ結果返却、レプリケーション、Etc. どこかの要因がボトルネックになり性能が決まる 46 パフォーマンスの基本(1) パフォーマンスとは? 業務モデルによって詳細は異なるが「単位時間でさばける処理量」 パフォーマンスを決定する要因は様々 CPU処理 © 2014 Metro Systems.
  • 47. 47 © 2014 Metro Systems. パフォーマンスの基本(2) パフォーマンスをあげるには? クエリ所要時間(レスポンス)を短縮する I/O量を下げる CPU処理を減らす メモリを増やす 検索対象データ量を減らす 結果データ量を減らす 並列度を上げる ロックの強度を下げる ロックの期間を短くする CPUを増やす
  • 48. 48 © 2014 Metro Systems. パラメータチューニング(1) 構築したら変えましょう!のパラメータ shared_bufers テーブルやインデックスの内容をPostgreSQLがキャッシュする量 実メモリの25%程度に設定 work_mem ソート処理やハッシュ結合を高速化するが、プロセス単位の設定なのであ まり大きくするとスワップする バッチセッションやバッチユーザのみ別に設定するのも一案 postgres=# ALTER USER batch SET work_mem = '100MB'; ALTER ROLE postgres=# c - batch You are now connected to database "postgres" as user "batch". postgres=> show work_mem; work_mem ---------- 100MB (1 row)
  • 49. 49 © 2014 Metro Systems. パラメータチューニング(2) 構築したら変えましょう!のパラメータ(つづき) checkpoint_segments/checkpoint_timeout 更新量が多いシステムではデフォルトの3/5minは小さいので、クラッシュ リカバリの時間との兼ね合いで設定 大きくするとpg_xlogディレクトリが肥大化する 小さすぎると、このようなログが出ます LOG: checkpoints are occurring too frequently (2 seconds apart) HINT: Consider increasing the configuration parameter "checkpoint_segments".
  • 50. 50 © 2014 Metro Systems. パラメータチューニング(4) 様子を見て変えましょう!のパラメータ random_page_cost 値を小さくするとインデックススキャンが選択されやすくなる SSDや高速なストレージを使用している場合は小さくしてみるとよいかも efective_cache_size OSのバッファキャッシュも含めたキャッシュサイズで、増やすとインデッ クススキャンになりやすい 実メモリの25%〜50%程度に設定 「速くする設定」も重要ですが、 「何が起きているか知るための設定」 の方が重要です!
  • 51. 51 © 2014 Metro Systems. パラメータチューニング(3) 構築したら変えましょう!のパラメータ(つづき) wal_level 運用要件上許される最小のレベルに wal_bufers デフォルトの「-1」だとshared_bufersの1/32を使用 大きくしすぎるとコミット時の待ちが長くなる
  • 52. 52 © 2014 Metro Systems. クエリチューニング 実際のチューニングは… 最近、画面の表示が遅くなってきた 調べたらデータベースアクセスが遅いようだ 一覧画面の表示に時間がかかっている どのSQLが遅いんだろう? 分からない…
  • 53. 53 EXPLAINの見方(1) EXPLAINとは PostgreSQLがクエリをどのように実行するか/したかを知るためのツール PostgreSQLは様々なクエリを以下のような「プランノード」をツリー上に 組み合わせて実現 スキャン Seq Scan/Index Scan/Index Only Scan/Bitmap Heap Scan/Etc. 結合 Nested Loop/Merge Join/Hash Join その他 Sort/Append/Aggregate/Limit/Etc. 各プランノード毎に以下の情報を出力 プラン種別・推定行数・推定コスト・推定レコード長 所要時間・ヒット行数・繰り返し回数(ANALYZE指定時のみ) © 2014 Metro Systems.
  • 54. 54 © 2014 Metro Systems. EXPLAINの見方(2) 実行計画の例 小さいテーブル(1ブロック) postgres=# explain select * from pgbench_branches where bid < 3; QUERY PLAN ------------------------------------------------------------------ Seq Scan on pgbench_branches (cost=0.00..1.06 rows=2 width=364) Filter: (bid < 3) (2 rows) 肥大化したテーブル(167ブロック) postgres=# explain select * from pgbench_branches where bid < 3; QUERY PLAN ----------------------------------------------------------------------------------- - Bitmap Heap Scan on pgbench_branches (cost=4.27..11.67 rows=2 width=364) Recheck Cond: (bid < 3) -> Bitmap Index Scan on pgbench_branches_pkey (cost=0.00..4.27 rows=2 width=0) Index Cond: (bid < 3) (4 rows)
  • 55. 55 © 2014 Metro Systems. EXPLAINの見方(3) 実行計画ノードの例 スキャン Seq Scan:先頭ブロックから順にヒープ全体をスキャン 大きいテーブルでは致命的にディスクI/Oが出る Index Scan:インデックスに基づいてヒープをスキャン ランダムアクセスになる 大量にヒットすると逆に遅い Index Only Scan:インデックスのみを用いてスキャン こまめにVACUUMをしないと選ばれない Bitmap Index Scan:複数のインデックスから作成したビットマッ プに基づいてヒープをスキャン ビットマップがメモリに収まれば高速
  • 56. 56 © 2014 Metro Systems. EXPLAINの見方(3) 実行計画ノードの例 結合 Nest Loop:Outer1行につきInner全体をスキャンし結合 Inner側の件数が多いと極端に遅い Merge Join:結合キーでソートされた結果同士を結合 事前にソートする必要があるが、大きい結果同士でもある程度高 速 Hash Join:Innerの結合キーでハッシュテーブルを作成し、それ に基づいてOuterをスキャン ハッシュテーブルがメモリに収まればかなり高速
  • 57. 57 © 2014 Metro Systems. EXPLAINの見方(3) 実行計画ノードの例 その他 Sort:結果を並べ替え 結果が多いと一時ファイルを使い始める 大量データのソートが必要なケースではwork_memを上げる Limit:結果の行方向の部分集合を取得 最終的に必要な件数が少なくて済む場合があり結果セットごとに 性能が変わり易い Materialize:結果セットを一時領域に保存 結果セットがwork_mem以上なら一時ファイルに書き出す
  • 58. 58 © 2014 Metro Systems. EXPLAINの見方(4) EXPLAINでの注意点 見積もり件数 見積もり件数と実際の件数に乖離がある場合は、最適でない実行 計画が選ばれがち 統計情報は最新に 定期的にANALYZEを実行して統計情報を更新 自動VACUUMで十分か、確認を! 大量更新バッチの後は手動ANALYZEを! 動作中のアプリの実行計画はauto_explainで contribモジュールのauto_explainを用いると、サーバログに実行 されたSQLの実行計画を出力可能 負荷が高くなるので、経過時間設定やon/ofの切り替えなどでな るべく出力対象を限定的に
  • 59. 59 EXPLAINの見方(5) 詳しくは 「生き残るデータベース管理者/アプリケーション開発者のための PostgreSQL SQLチューニング入門〜Explaining Explain〜」 OSC 2012 Tokyo/Springにて株式会社アシストの田中氏が講演 http://www.postgresql.jp/events/osc12tk_spring_folder © 2014 Metro Systems.
  • 60. 60 © 2014 Metro Systems. 便利な外部ツール pg_dbms_stats PostgreSQLの持つ統計情報を管理 統計情報を固定して実行計画の変化を抑止 本番環境の統計情報を検証環境に移植してチューニング http://sourceforge.jp/projects/pgdbmsstats/ pg_hint_plan PostgreSQLでヒント句を利用可能にする http://sourceforge.jp/projects/pghintplan/ pgAdmin-Ⅲ 実行計画をグラフィカルに表示 クエリ書き換えのトライ&エラーに http://www.pgadmin.org
  • 61. 61 © 2014 Metro Systems. ディスクI/O分散 ディスクI/OはRDBMSの最大の敵 PostgreSQLで発生するディスクI/O データファイル(チェックポイント、VACUUM) WAL(更新処理、VACUUM、CHECKPOINT) バックアップ ディスクI/Oボトルネックであれば、分散化で高速化 オンラインWALを分離 サーバ停止状態で$PGDATA/pg_xlogを別ボリュームに移動しシ ンボリックリンクでつなぐ テーブルスペースを分離 アクセスの競合するテーブルを異なるテーブルスペースに配置 注意点 バックアップ時に$PGDATA以外の場所を取り忘れないように! pg_basebackupを使えば、全体を容易にバックアップ可能
  • 62. 62 参考資料 PostgreSQL文書 基本的には正しい情報はここから! http://www.postgresql.jp/document/9.3/html/index.html PostgreSQL全機能バイブル 非常に細かく内部構造や詳細動作が記述されています 鈴木啓修・技術評論社 Let's Postgres 日本語のPostgreSQL技術情報ポータル http://lets.postgresql.jp PostgreSQL Internals 体系的にまとまっているのでアーキテクチャ概要などの理解に http://www.postgresqlinternals.org/ © 2014 Metro Systems.
  • 63. 63 © 2014 Metro Systems. 最近の開発動向(1) 次のバージョンの9.4は… 今秋リリースの見込み 現在、ベータテスト中→ガンガン試してください! 個人的には、GINインデックス高速化やJSONB(バイ ナリJSON)が熱いかと 6/19に本イベントで講演された宗近さんの講演資料が 詳しいです http://www.slideshare.net/munetika/dbts-osaka2014- pg94
  • 64. 64 © 2014 Metro Systems. 最近の開発動向(2) その次のバージョンの9.5は… 6/15に開発サイクルが始まりました 自律トランザクション B-Treeインデックス構築高速化 共有バッファのNUMA対応 共有バッファのHibernation 外部テーブルで継承や結合をサポート←宣伝
  • 65. ご清聴ありがとうございました。 65 © 2014 Metro Systems. ■お問い合わせ■ 株式会社メトロシステムズ 花田 茂 Mail: hanada@metrosystems.co.jp Twitter: @s87