SlideShare uma empresa Scribd logo
1 de 26
CTB57 
2014-09-06 
Tomonari Katsumata
まずは自己紹介 
• 勝俣智成(かつまたともなり) 
• 1978年生NTTソフトウェア勤務。大学時代は 
CGの研究をしていましたが,入社とともに畑 
違いの全文検索/データベースの世界へ。こ 
の頃にPostgreSQLと出会い,10年来の付き合 
い。今では社内支援や社外講師,コミュニティ 
活動などを行っています。無類のお酒,カ 
レー好き。
ついでに宣伝 
• 先日9/4にPostgreSQLに 
関する本を出しました。 
その名も「内部構造か 
ら学ぶPostgreSQL設 
計・運用計画の鉄則」。 
• 今までにない可愛い象 
さんが目印です★
Agenda 
• CTB57とは? 
• メンバー紹介 
• 推しメン紹介 
– pg_prewarm 
– pg_xlogdump 
• 神7決定戦
CTB57とは? 
• PostgreSQLには、contribモジュールという素敵なおまけ機 
能が存在します。 
• contribモジュール、Contribモジュール、ConTribモジュール、 
ConTriBモジュール、、、 
• そう、CTBです。 
• PostgreSQL9.4beta2現在、57個のモジュールが本体に同 
梱されています。 
• なので、CTB57です。 
• ちなみに、巷ではA○B48というアイドルグループが活躍し 
てますね☆(偶然です) 
• ということで、本日はcontribモジュールことCTB57のお話で 
す!
メンバ紹介 
• まずは、全57名のメンバを簡単にまとめてみ 
ました。adminpack fuzzystrmatch pg_freespacemap sepgsql 
auth_delay hstore pg_prewarm spi 
auto_explain intagg pgrowlocks sslinfo 
btree_gin intarray pg_standby start-scripts 
btree_gist isn pg_stat_statements tablefunc 
chkpass lo pgstattuple tcn 
citext ltree pg_test_fsync test_decoding 
cube oid2name pg_test_timing test_parser 
dblink pageinspect pg_trgm test_shm_mq 
dict_int passwordcheck pg_upgrade tsearch2 
dict_xsyn pg_archivecleanup pg_upgrade_support unaccent 
dummy_seclabel pgbench pg_xlogdump uuid-ossp 
earthdistance pg_buffercache postgres_fdw vacuumlo 
file_fdw pgcrypto seg worker_spi 
xml2 
有名なあの娘か 
ら、名前しか知ら 
ない娘までたくさ 
んいますね!
メンバ紹介~各自PR~ 
• adminpack 
– pgAdminとかがサーバログファイルを遠隔管理す 
るのに利用されるツール 
• auth_delay 
– 認証を遅らせてパスワードの総当たり攻撃を防ぐ 
• auto_explain 
– 自動でEXPLAINを取ってくれる★ 
• btree_gin 
– B-Tree相当の機能をGINで実現
メンバ紹介~各自PR~ 
• btree_gist 
– B-Tree相当の機能をGiSTで実現 
• chkpass 
– 自動で暗号化されるchkpass型を追加 
• citext 
– 大文字小文字の区別をしない文字列型を追加 
• cube 
– 多次元立体のcube型を追加
メンバ紹介~各自PR~ 
• dblink 
– セッションから他のPostgreSQLへの接続をサポー 
ト。postgres_fdwのライバル(?) 
• dict_int 
– 全文検索用辞書テンプレートの例(研修生) 
• dict_xsyn 
– 全文検索用辞書テンプレートの例(研修生) 
• dummy_seclabel 
– SECURITY LABEL文の試験サポートモジュール★
メンバ紹介~各自PR~ 
• earthdistance 
– 地表面上の距離を算出する関数,オペレータを提供 
• file_fdw 
– サーバ上にあるファイルを読み込む 
• fuzzystrmatch 
– 文字列間の類似度,相違度を求める関数群を提供 
• hstore 
– キーバリュー値を扱えるhstore型を追加
メンバ紹介~各自PR~ 
• intagg 
– 整数型の集約、列挙を行う。卒業間近(?) 
• intarray 
– NULLなし整数配列の操作関数,オペレータを提供 
• isn 
– 書籍とか音楽とか国際的な標準製品番号を扱う 
データ型を追加 
• lo 
– ラージオブジェクトのサポートを提供
メンバ紹介~各自PR~ 
• ltree 
– 階層ツリーを模擬した構造のltree型を追加 
• oid2name 
– OIDとPostgreSQLのファイル名の対応付けをするコマ 
ンド 
• pageinspect 
– デバッグの際に、データページの中身をちら見できる 
機能を提供 
• passwordcheck 
– CREATE ROLEとかALTER ROLEでパスワードをセットし 
たときにパスワードの強度をチェックする機能を追加
メンバ紹介~各自PR~ 
• pg_archivecleanup 
– WALアーカイブファイルを削除するコマンド 
• pgbench 
– CTBの絶対的エース。TCP-B相当のベンチマークをさ 
くっと実行★ 
• pg_buffercache 
– 共有バッファの中身をちら見する機能を提供。 
pg_kaleidoscopeで使用されてましたね 
• pgcrypto 
– 暗号化関数を提供。謎多き乙女
メンバ紹介~各自PR~ 
• pg_freespacemap 
– FSMの中身をちら見する機能を提供 
• pg_prewarm 
– 期待の新人さん。その名の通り、事前に温めてくれる 
• pgrowlocks 
– 指定したテーブルの行ロック情報を確認する関数を 
提供★ 
• pg_standby 
– ウォームスタンバイサーバ作成をサポートするコマン 
ド
メンバ紹介~各自PR~ 
• pg_stat_statements 
– 実行されたSQLの統計情報を記録する手段を提供★ 
• pgstattuple 
– 行レベルの統計情報を取得する関数群を提供★ 
• pg_test_fsync 
– 環境に応じた最適なwal_sync_methodをチェックする 
コマンド 
• pg_test_timing 
– 時間計測でかかるオーバヘッドを測定するコマンド
メンバ紹介~各自PR~ 
• pg_trgm 
– 類似文字列の高速検索や類似度測定のための関数, 
オペレータを追加 
• pg_upgrade/pg_upgrade_support 
– PostgreSQLのメジャーバージョンアップを行うコマンド 
• pg_xlogdump 
– WALの中身をちら見するコマンド。 
• postgres_fdw 
– 外部PostgreSQLにアクセスする機能を提供。 
ポストdblinkか★
メンバ紹介~各自PR~ 
• seg 
– 浮動小数点区間を表現するseg型を提供 
• sepgsql 
– SELinuxのセキュリティポリシーに基づく強制アク 
セスコントロール機能を提供★ 
• spi 
– SPIやトリガの使用例を提供(研修生) 
• sslinfo 
– SSL接続時の情報表示機能を提供
メンバ紹介~各自PR~ 
• start-scripts 
– いくつかのOS用の起動スクリプト。RPMでインストー 
ルされるものとは別モノ 
• tablefunc 
– 複数行を返すテーブル関数の例(研修生) 
• tcn 
– 監視者への通知を行うトリガを提供 
• test_decoding 
– 期待の新人さん。ロジカルデコードする機能を提供
メンバ紹介~各自PR~ 
• test_parser 
– 全文検索用の独自パーサの例(研修生) 
• test_shm_mq 
– 新人さん。動的に共有バッファにアクセスしたりする 
機能の例(研修生) 
• tsearch2 
– 全文検索機能を提供。8.3以降、本体に全文検索機 
能が入ったことにより卒業間近 
• unaccent 
– 全文検索用に語彙素から発音区分記号を除去する 
機能を追加
メンバ紹介~各自PR~ 
• uuid-ossp 
– OSSP UUIDライブラリを使って汎用一意識別子を生成する 
機能を追加。RPMパッケージでたまに問題になる問題児 
(?) 
• vacuumlo 
– ラージオブジェクト用VACUUMコマンドを提供 
• worker_spi 
– 9.3で追加されたbackgroundworkerのサンプルを提供(研 
修生)。ドキュメント化されていない可愛そうな娘 
• xml2 
– 昔のXML機能。PostgreSQL8.3以降、本体にXML機能が追 
加されたため、卒業間近
推しメン紹介 
• pg_prewarm 
– これから秋に向けて温まりたい。本当に暖かい? 
– ←prewarmなしprewarmあり→ 
$ pgbench -c 10 -T 30 bench 
duration: 30 s 
number of transactions actually processed: 630 
latency average: 476.190 ms 
tps = 20.520043 (including connections establishing) 
tps = 20.682097 (excluding connections establishing) 
$ psql bench -c "select pg_prewarm('pgbench_accounts')" 
pg_prewarm 
------------ 
16424 
[katsumata@localhost postgresql-9.4beta2]$ psql bench -c "select 
pg_prewarm('pgbench_accounts_pkey')" 
pg_prewarm 
------------ 
2745 
[katsumata@localhost postgresql-9.4beta2]$ pgbench -c 10 -T 30 bench 
duration: 30 s 
number of transactions actually processed: 5645 
latency average: 53.144 ms 
tps = 173.439651 (including connections establishing) 
tps = 173.761930 (excluding connections establishing) 効果は抜群だ!
私の推しメン 
• pg_xlogdump 
– 9.4からWALの書き出し量が削減されます! 
• Conditionally write only the modified portion of 
updated rows to WAL 
– 確認に重宝しそう。出力結果は以下のようなもの。 
rmgr: Heap len (rec/tot): 150/ 182, tx: 1830, lsn: 0/020424D8, prev 0/02042490, bkp: 0000, desc: inplace: rel 
1663/16392/12764; tid 1/4 
rmgr: Transaction len (rec/tot): 68/ 100, tx: 1830, lsn: 0/02042590, prev 0/020424D8, bkp: 0000, desc: commit: 2014-09-05 
16:06:04.510954 JST; rels: base/16392/16404 base/16392/16402 base/16392/16399 
rmgr: Heap2 len (rec/tot): 32/ 64, tx: 0, lsn: 0/020425F8, prev 0/02042590, bkp: 0000, desc: clean: rel 1663/16392/12764; blk 
0 remxid 1830 
rmgr: Heap len (rec/tot): 41/ 73, tx: 1831, lsn: 0/02042638, prev 0/020425F8, bkp: 0000, desc: insert(init): rel 
1663/16392/16405; tid 0/1 
rmgr: Transaction len (rec/tot): 12/ 44, tx: 1831, lsn: 0/02042688, prev 0/02042638, bkp: 0000, desc: commit: 2014-09-05 
16:06:08.049169 JST 
rmgr: Heap len (rec/tot): 46/ 78, tx: 1832, lsn: 0/020426B8, prev 0/02042688, bkp: 0000, desc: hot_update: rel 
1663/16392/16405; tid 0/1 xmax 1832 ; new tid 0/2 xmax 0 
rmgr: Transaction len (rec/tot): 12/ 44, tx: 1832, lsn: 0/02042708, prev 0/020426B8, bkp: 0000, desc: commit: 2014-09-05 
16:06:14.447135 JST 
pg_xlogdump: FATAL: error in WAL record at 0/2042708: record with zero length at 0/2042738
神7決定戦 
• では、最後に皆で神7を決定しましょう! 
– ダレトク?いいんです!決めましょう!! 
• どうやって? 
– 多数決です。お手を拝借! 
– とはいえ、57人は多いっす。。。 
• ということで、独断と偏見で20人を選抜しまし 
た! 
– シンキングタ~イム♪
神7決定戦 
- 選抜メンバ- 
adminpack auto_explain chkpass dblink dummy_seclab 
el 
earthdistance file_fdw hstore oid2name pageinspect 
pgbench pg_buffercache pgcrypto pg_prewarm pgrowlocks 
pg_stat_state 
pgstattuple pg_xlogdump postgres_fdw sepgsql 
ments 
投票できるのは一人3メンバまで 
じ~っくり選んでください!
神7決定! 
No. Name 
1 
pgbench:5 
2 
auto_explain:4 
3 
4 
5 
6 
7 postgres_fdw:2 
pg_stat_statements:4 
dblink:2 
pg_prewarm:2 
pgstattuple:2
さいごに 
• 無事に神7も決定しました。 
• しかし、CTBは神7だけではありません。すべ 
てのCTBメンバがPostgreSQLを支えているの 
です! 
• 本発表で、一人でもcontribディレクトリをにや 
にやしながら眺めてくれる人がでてきてくれた 
ら幸いですw

Mais conteúdo relacionado

Mais procurados

Road to ggplot2再入門
Road to ggplot2再入門Road to ggplot2再入門
Road to ggplot2再入門nocchi_airport
 
hubotで快適BOT生活
hubotで快適BOT生活 hubotで快適BOT生活
hubotで快適BOT生活 Kazufumi Otani
 
import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28th0x0472
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2Mitsutoshi Nakano
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Kazuya Wada
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能についてshigeki_ohtsu
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Daisuke Kikuchi
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugTakeshi Komiya
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringMakoto Ohnami
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perlJiro Nishiguchi
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)ashigirl ZareGoto
 
Rustのタスクモデルについて
RustのタスクモデルについてRustのタスクモデルについて
Rustのタスクモデルについてzigen
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopsknjcode
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)Kenichiro MATOHARA
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングt-sin
 
PostgreSQL + pgpool構成におけるリカバリ
PostgreSQL + pgpool構成におけるリカバリPostgreSQL + pgpool構成におけるリカバリ
PostgreSQL + pgpool構成におけるリカバリhiroin0
 
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャDADA246
 

Mais procurados (20)

Json rpc 2_0
Json rpc 2_0Json rpc 2_0
Json rpc 2_0
 
Road to ggplot2再入門
Road to ggplot2再入門Road to ggplot2再入門
Road to ggplot2再入門
 
hubotで快適BOT生活
hubotで快適BOT生活 hubotで快適BOT生活
hubotで快適BOT生活
 
import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
 
Rustのタスクモデルについて
RustのタスクモデルについてRustのタスクモデルについて
Rustのタスクモデルについて
 
JVM! JVM! JVM!
JVM! JVM! JVM!JVM! JVM! JVM!
JVM! JVM! JVM!
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatops
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
 
PostgreSQL + pgpool構成におけるリカバリ
PostgreSQL + pgpool構成におけるリカバリPostgreSQL + pgpool構成におけるリカバリ
PostgreSQL + pgpool構成におけるリカバリ
 
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ
 

Semelhante a Ctb57 with god7

位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 TokyoYoshiyuki Asaba
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料kasaharatt
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...Insight Technology, Inc.
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜Taro Matsuzawa
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会Shigeru Hanada
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)Kosuke Kida
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Kotaro Nakayama
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 

Semelhante a Ctb57 with god7 (20)

位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
Altanative macro
Altanative macroAltanative macro
Altanative macro
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
 
Fluentd casual
Fluentd casualFluentd casual
Fluentd casual
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 

Ctb57 with god7

  • 2. まずは自己紹介 • 勝俣智成(かつまたともなり) • 1978年生NTTソフトウェア勤務。大学時代は CGの研究をしていましたが,入社とともに畑 違いの全文検索/データベースの世界へ。こ の頃にPostgreSQLと出会い,10年来の付き合 い。今では社内支援や社外講師,コミュニティ 活動などを行っています。無類のお酒,カ レー好き。
  • 3. ついでに宣伝 • 先日9/4にPostgreSQLに 関する本を出しました。 その名も「内部構造か ら学ぶPostgreSQL設 計・運用計画の鉄則」。 • 今までにない可愛い象 さんが目印です★
  • 4. Agenda • CTB57とは? • メンバー紹介 • 推しメン紹介 – pg_prewarm – pg_xlogdump • 神7決定戦
  • 5. CTB57とは? • PostgreSQLには、contribモジュールという素敵なおまけ機 能が存在します。 • contribモジュール、Contribモジュール、ConTribモジュール、 ConTriBモジュール、、、 • そう、CTBです。 • PostgreSQL9.4beta2現在、57個のモジュールが本体に同 梱されています。 • なので、CTB57です。 • ちなみに、巷ではA○B48というアイドルグループが活躍し てますね☆(偶然です) • ということで、本日はcontribモジュールことCTB57のお話で す!
  • 6. メンバ紹介 • まずは、全57名のメンバを簡単にまとめてみ ました。adminpack fuzzystrmatch pg_freespacemap sepgsql auth_delay hstore pg_prewarm spi auto_explain intagg pgrowlocks sslinfo btree_gin intarray pg_standby start-scripts btree_gist isn pg_stat_statements tablefunc chkpass lo pgstattuple tcn citext ltree pg_test_fsync test_decoding cube oid2name pg_test_timing test_parser dblink pageinspect pg_trgm test_shm_mq dict_int passwordcheck pg_upgrade tsearch2 dict_xsyn pg_archivecleanup pg_upgrade_support unaccent dummy_seclabel pgbench pg_xlogdump uuid-ossp earthdistance pg_buffercache postgres_fdw vacuumlo file_fdw pgcrypto seg worker_spi xml2 有名なあの娘か ら、名前しか知ら ない娘までたくさ んいますね!
  • 7. メンバ紹介~各自PR~ • adminpack – pgAdminとかがサーバログファイルを遠隔管理す るのに利用されるツール • auth_delay – 認証を遅らせてパスワードの総当たり攻撃を防ぐ • auto_explain – 自動でEXPLAINを取ってくれる★ • btree_gin – B-Tree相当の機能をGINで実現
  • 8. メンバ紹介~各自PR~ • btree_gist – B-Tree相当の機能をGiSTで実現 • chkpass – 自動で暗号化されるchkpass型を追加 • citext – 大文字小文字の区別をしない文字列型を追加 • cube – 多次元立体のcube型を追加
  • 9. メンバ紹介~各自PR~ • dblink – セッションから他のPostgreSQLへの接続をサポー ト。postgres_fdwのライバル(?) • dict_int – 全文検索用辞書テンプレートの例(研修生) • dict_xsyn – 全文検索用辞書テンプレートの例(研修生) • dummy_seclabel – SECURITY LABEL文の試験サポートモジュール★
  • 10. メンバ紹介~各自PR~ • earthdistance – 地表面上の距離を算出する関数,オペレータを提供 • file_fdw – サーバ上にあるファイルを読み込む • fuzzystrmatch – 文字列間の類似度,相違度を求める関数群を提供 • hstore – キーバリュー値を扱えるhstore型を追加
  • 11. メンバ紹介~各自PR~ • intagg – 整数型の集約、列挙を行う。卒業間近(?) • intarray – NULLなし整数配列の操作関数,オペレータを提供 • isn – 書籍とか音楽とか国際的な標準製品番号を扱う データ型を追加 • lo – ラージオブジェクトのサポートを提供
  • 12. メンバ紹介~各自PR~ • ltree – 階層ツリーを模擬した構造のltree型を追加 • oid2name – OIDとPostgreSQLのファイル名の対応付けをするコマ ンド • pageinspect – デバッグの際に、データページの中身をちら見できる 機能を提供 • passwordcheck – CREATE ROLEとかALTER ROLEでパスワードをセットし たときにパスワードの強度をチェックする機能を追加
  • 13. メンバ紹介~各自PR~ • pg_archivecleanup – WALアーカイブファイルを削除するコマンド • pgbench – CTBの絶対的エース。TCP-B相当のベンチマークをさ くっと実行★ • pg_buffercache – 共有バッファの中身をちら見する機能を提供。 pg_kaleidoscopeで使用されてましたね • pgcrypto – 暗号化関数を提供。謎多き乙女
  • 14. メンバ紹介~各自PR~ • pg_freespacemap – FSMの中身をちら見する機能を提供 • pg_prewarm – 期待の新人さん。その名の通り、事前に温めてくれる • pgrowlocks – 指定したテーブルの行ロック情報を確認する関数を 提供★ • pg_standby – ウォームスタンバイサーバ作成をサポートするコマン ド
  • 15. メンバ紹介~各自PR~ • pg_stat_statements – 実行されたSQLの統計情報を記録する手段を提供★ • pgstattuple – 行レベルの統計情報を取得する関数群を提供★ • pg_test_fsync – 環境に応じた最適なwal_sync_methodをチェックする コマンド • pg_test_timing – 時間計測でかかるオーバヘッドを測定するコマンド
  • 16. メンバ紹介~各自PR~ • pg_trgm – 類似文字列の高速検索や類似度測定のための関数, オペレータを追加 • pg_upgrade/pg_upgrade_support – PostgreSQLのメジャーバージョンアップを行うコマンド • pg_xlogdump – WALの中身をちら見するコマンド。 • postgres_fdw – 外部PostgreSQLにアクセスする機能を提供。 ポストdblinkか★
  • 17. メンバ紹介~各自PR~ • seg – 浮動小数点区間を表現するseg型を提供 • sepgsql – SELinuxのセキュリティポリシーに基づく強制アク セスコントロール機能を提供★ • spi – SPIやトリガの使用例を提供(研修生) • sslinfo – SSL接続時の情報表示機能を提供
  • 18. メンバ紹介~各自PR~ • start-scripts – いくつかのOS用の起動スクリプト。RPMでインストー ルされるものとは別モノ • tablefunc – 複数行を返すテーブル関数の例(研修生) • tcn – 監視者への通知を行うトリガを提供 • test_decoding – 期待の新人さん。ロジカルデコードする機能を提供
  • 19. メンバ紹介~各自PR~ • test_parser – 全文検索用の独自パーサの例(研修生) • test_shm_mq – 新人さん。動的に共有バッファにアクセスしたりする 機能の例(研修生) • tsearch2 – 全文検索機能を提供。8.3以降、本体に全文検索機 能が入ったことにより卒業間近 • unaccent – 全文検索用に語彙素から発音区分記号を除去する 機能を追加
  • 20. メンバ紹介~各自PR~ • uuid-ossp – OSSP UUIDライブラリを使って汎用一意識別子を生成する 機能を追加。RPMパッケージでたまに問題になる問題児 (?) • vacuumlo – ラージオブジェクト用VACUUMコマンドを提供 • worker_spi – 9.3で追加されたbackgroundworkerのサンプルを提供(研 修生)。ドキュメント化されていない可愛そうな娘 • xml2 – 昔のXML機能。PostgreSQL8.3以降、本体にXML機能が追 加されたため、卒業間近
  • 21. 推しメン紹介 • pg_prewarm – これから秋に向けて温まりたい。本当に暖かい? – ←prewarmなしprewarmあり→ $ pgbench -c 10 -T 30 bench duration: 30 s number of transactions actually processed: 630 latency average: 476.190 ms tps = 20.520043 (including connections establishing) tps = 20.682097 (excluding connections establishing) $ psql bench -c "select pg_prewarm('pgbench_accounts')" pg_prewarm ------------ 16424 [katsumata@localhost postgresql-9.4beta2]$ psql bench -c "select pg_prewarm('pgbench_accounts_pkey')" pg_prewarm ------------ 2745 [katsumata@localhost postgresql-9.4beta2]$ pgbench -c 10 -T 30 bench duration: 30 s number of transactions actually processed: 5645 latency average: 53.144 ms tps = 173.439651 (including connections establishing) tps = 173.761930 (excluding connections establishing) 効果は抜群だ!
  • 22. 私の推しメン • pg_xlogdump – 9.4からWALの書き出し量が削減されます! • Conditionally write only the modified portion of updated rows to WAL – 確認に重宝しそう。出力結果は以下のようなもの。 rmgr: Heap len (rec/tot): 150/ 182, tx: 1830, lsn: 0/020424D8, prev 0/02042490, bkp: 0000, desc: inplace: rel 1663/16392/12764; tid 1/4 rmgr: Transaction len (rec/tot): 68/ 100, tx: 1830, lsn: 0/02042590, prev 0/020424D8, bkp: 0000, desc: commit: 2014-09-05 16:06:04.510954 JST; rels: base/16392/16404 base/16392/16402 base/16392/16399 rmgr: Heap2 len (rec/tot): 32/ 64, tx: 0, lsn: 0/020425F8, prev 0/02042590, bkp: 0000, desc: clean: rel 1663/16392/12764; blk 0 remxid 1830 rmgr: Heap len (rec/tot): 41/ 73, tx: 1831, lsn: 0/02042638, prev 0/020425F8, bkp: 0000, desc: insert(init): rel 1663/16392/16405; tid 0/1 rmgr: Transaction len (rec/tot): 12/ 44, tx: 1831, lsn: 0/02042688, prev 0/02042638, bkp: 0000, desc: commit: 2014-09-05 16:06:08.049169 JST rmgr: Heap len (rec/tot): 46/ 78, tx: 1832, lsn: 0/020426B8, prev 0/02042688, bkp: 0000, desc: hot_update: rel 1663/16392/16405; tid 0/1 xmax 1832 ; new tid 0/2 xmax 0 rmgr: Transaction len (rec/tot): 12/ 44, tx: 1832, lsn: 0/02042708, prev 0/020426B8, bkp: 0000, desc: commit: 2014-09-05 16:06:14.447135 JST pg_xlogdump: FATAL: error in WAL record at 0/2042708: record with zero length at 0/2042738
  • 23. 神7決定戦 • では、最後に皆で神7を決定しましょう! – ダレトク?いいんです!決めましょう!! • どうやって? – 多数決です。お手を拝借! – とはいえ、57人は多いっす。。。 • ということで、独断と偏見で20人を選抜しまし た! – シンキングタ~イム♪
  • 24. 神7決定戦 - 選抜メンバ- adminpack auto_explain chkpass dblink dummy_seclab el earthdistance file_fdw hstore oid2name pageinspect pgbench pg_buffercache pgcrypto pg_prewarm pgrowlocks pg_stat_state pgstattuple pg_xlogdump postgres_fdw sepgsql ments 投票できるのは一人3メンバまで じ~っくり選んでください!
  • 25. 神7決定! No. Name 1 pgbench:5 2 auto_explain:4 3 4 5 6 7 postgres_fdw:2 pg_stat_statements:4 dblink:2 pg_prewarm:2 pgstattuple:2
  • 26. さいごに • 無事に神7も決定しました。 • しかし、CTBは神7だけではありません。すべ てのCTBメンバがPostgreSQLを支えているの です! • 本発表で、一人でもcontribディレクトリをにや にやしながら眺めてくれる人がでてきてくれた ら幸いですw