2017/05/19
株式会社Fusic 平田 哲
RDS for PostgreSQLにまつわる
雑多な話
Fusic Co., Ltd.
自己紹介
3
平田 哲(HIRATA, Satoshi)
id: debility
‘Kiban Unit’ as Fusic Co., Ltd.
http://fusic.co.jp/
Fukuoka.pm
Program, Server, Network, and “Nomikai”
icon: © mutsuking
Fusic Co., Ltd.
自己紹介
4
平田 哲(HIRATA, Satoshi)
id: debility
‘Kiban Unit’ as Fusic Co., Ltd.
http://fusic.co.jp/
Fukuoka.pm
Program, Server, Network, and “Nomikai”
icon: © mutsuking
Fusic Co., Ltd. 5
基盤ユニット
Fusic Co., Ltd. 6
基盤ユニット(実際)
※人数こんなにいません
Fusic Co., Ltd.
自己紹介
7
平田 哲(HIRATA, Satoshi)
id: debility
‘Kiban Unit’ as Fusic Co., Ltd.
http://fusic.co.jp/
Fukuoka.pm
Program, Server, Network, and “Nomikai”
icon: © mutsuking
Fusic Co., Ltd.
今日の話
8
AWSの話をします。
Fusic Co., Ltd.
今日の話
9
Amazon RDSの話
RDS for PostgreSQL固有の話
他実際に刺さった話
その他
Fusic Co., Ltd.
Amazon RDS
10
Amazon Relational Database Service
要はAWSが提供している、フルマネージドの
RDBMSサービス。
現在は6種類のDBが用意されている。
Fusic Co., Ltd.
Amazon RDS
11
Fusic Co., Ltd.
Amazon RDSいいところ
12
冗長構成を組むのが楽
Fusic Co., Ltd.
Amazon RDSいいところ
13
冗長構成を組むのが楽
Read ReplicaでSELECTの多重化が楽
Fusic Co., Ltd.
Amazon RDSいいところ
14
冗長構成を組むのが楽
Read ReplicaでSELECTの多重化が楽
バックアップ/リストアが楽
Fusic Co., Ltd.
Amazon RDSいいところ
15
冗長構成を組むのが楽
Read ReplicaでSELECTの多重化が楽
バックアップ/リストアが楽
Fusic Co., Ltd.
Amazon RDS以前
16
ELB
EC2 Instances
+ Auto Scale
monitor
access
Fusic Co., Ltd.
Amazon RDS以前
17
ELB
EC2 Instances
+ Auto Scale
pgpoolーII
DB
DB
monitor
access
Fusic Co., Ltd.
Amazon RDS以前
18
ELB
EC2 Instances
+ Auto Scale
pgpoolーII
DB
DB
Monitoring
monitor
pgpool AMI
access
monitor
Fusic Co., Ltd.
Amazon RDS以前
19
ELB
EC2 Instances
+ Auto Scale
pgpoolーII
DB
DB
Monitoring
monitor
pgpool AMI
access
monitor
Fusic Co., Ltd.
Amazon RDS以前
20
ELB
EC2 Instances
+ Auto Scale
pgpoolーII
DB
DB
Monitoring
monitor
pgpool AMI
access
monitor
Fusic Co., Ltd.
Amazon RDS以後
21
access ELB
EC2 Instances
+ Auto Scale
Fusic Co., Ltd.
Amazon RDS以後
22
access ELB RDS
EC2 Instances
+ Auto Scale
Fusic Co., Ltd.
Amazon RDS以後
23
access ELB RDS
EC2 Instances
+ Auto Scale
Fusic Co., Ltd.
Amazon RDS困るところ
24
費用はそれなりにかかる
Fusic Co., Ltd.
Amazon RDS困るところ
25
費用はそれなりにかかる
急なバージョンアップ(不可避)がある
Fusic Co., Ltd.
Amazon RDS困るところ
26
費用はそれなりにかかる
急なバージョンアップ(不可避)がある
一部機能は使えない
Fusic Co., Ltd.
Amazon RDS困るところ
27
費用はそれなりにかかる
急なバージョンアップ(不可避)がある
一部機能は使えない
Fusic Co., Ltd.
使えない機能
28
Bulk Insert
Fusic Co., Ltd.
使えない機能
29
Bulk Insert
psqlの¥copyコマンド → 使える
COPY句 → 使えない
のでデータ投入用のクエリ書くときなんかに注
意が必要。
Fusic Co., Ltd.
使えない機能
30
日本語の全文検索
Fusic Co., Ltd.
使えない機能
31
日本語の全文検索
pg_trgmとtsearch2は使えるんだけど、日本
語で中間一致とかができない
Fusic Co., Ltd.
使えない機能
32
日本語の全文検索
どうしてもやりたい場合は、
1. 別途EC2にPostgreSQLをインストール
2. Bucardoなどを使ってRDSのSlaveにする
3. slave側で全文検索頑張る
みたいなことをやらなきゃいけない。
Fusic Co., Ltd.
他刺さった話
33
Fusic Co., Ltd.
他刺さった話
34
前提:
データ量が計300GB, 数百万レコードある
Fusic Co., Ltd.
他刺さった話
35
前提:
データ量が計300GB, 数百万レコードある
DB操作ログ用の用のtableがある
→ triggerで書き込まれる(INSERTのみ)
Fusic Co., Ltd.
ある日
36
「ログインに2分かかるんだけど」
Fusic Co., Ltd.
他刺さった話
37
SELECT
datid,datname,pid,usename,query_start,
state,query
FROM pg_stat_activity;
Fusic Co., Ltd.
他刺さった話
38
SELECT
datid,datname,pid,usename,query_start,
state,query
FROM pg_stat_activity;
→ auto vacuumが終わらなくなってた
Fusic Co., Ltd.
他刺さった話
39
1. auto vacuumのプロセスを止める
SELECT pg_cancel_backend(99999);
Fusic Co., Ltd.
他刺さった話
40
1. auto vacuumのプロセスを止める
SELECT pg_cancel_backend(99999);
2. auto vacuumを切る
ALTER TABLE table_name SET
(autovacuum_enabled = false,
toast.autovacuum_enabled = false);
Fusic Co., Ltd.
他刺さった話
41
3. 手動でvacuumする
VACUUM ANALYZE table_name;
Fusic Co., Ltd.
他刺さった話
42
3. 手動でvacuumする
VACUUM ANALYZE table_name;
4. auto vacuumを有効にする
ALTER TABLE table_name SET
(autovacuum_enabled = true,
toast.autovacuum_enabled = true);
Fusic Co., Ltd.
vacuumとRDS
43
gp2(汎用SSD)にはI/Oクレジットがある
Fusic Co., Ltd.
vacuumとRDS
44
gp2(汎用SSD)にはI/Oクレジットがある
→ 高負荷時にクレジット消費(バースト)
Fusic Co., Ltd.
vacuumとRDS
45
gp2(汎用SSD)にはI/Oクレジットがある
→ 高負荷時にクレジット消費(バースト)
→ 消費しきるとI/Oが大きく落ちる
Fusic Co., Ltd.
vacuumとRDS
46
Fusic Co., Ltd.
vacuumとRDS
47
負荷がこれを超えるとバースト開始
Fusic Co., Ltd.
vacuumとRDS
48
バースト継続できる最大秒数
※ クレジットが満タンの場合
Fusic Co., Ltd.
vacuumとRDS
49
gp2(汎用SSD)にはI/Oクレジットがある
→ 高負荷時にクレジット消費(バースト)
→ 消費しきるとI/Oが大きく落ちる
→ クレジットが尽きてもvacuumが終わら
ないと詰む
Fusic Co., Ltd.
vacuumとRDS
50
gp2(汎用SSD)にはI/Oクレジットがある
→ 高負荷時にクレジット消費(バースト)
→ 消費しきるとI/Oが大きく落ちる
→ クレジットが尽きてもvacuumが終わら
ないと詰む
ので、vacuum設計が大事なケースがあります。
Fusic Co., Ltd.
vacuumとRDS
51
case 1:
autovacuum_analyze_scale_factor
autovacuum_vacuum_scale_factor
をできるだけ小さくして、高頻度で
analyze/vacuumがかかるようにする
Fusic Co., Ltd.
vacuumとRDS
52
case 1:
autovacuum_analyze_scale_factor
autovacuum_vacuum_scale_factor
をできるだけ小さくして、高頻度で
analyze/vacuumがかかるようにする
case 2:
autovacuumを切って、夜間に実行する
Fusic Co., Ltd.
vacuumとRDS
53
といった事情があるので、100GB未満のデー
タの場合はMagneticを選択したほうがいいか
もしれません。
Fusic Co., Ltd. 54
Amazon Aurora
Fusic Co., Ltd. 55
Amazon Aurora
Amazon Aurora
Amazonが提供しているオリジナルのRDBMS
Fusic Co., Ltd. 56
Amazon Aurora
Amazon Aurora
Amazonが提供しているオリジナルのRDBMS
2016/12にPostgreSQL互換を発表
Fusic Co., Ltd. 57
Amazon Aurora
Amazon Aurora
Amazonが提供しているオリジナルのRDBMS
2016/12にPostgreSQL互換を発表
同サイズのPostgreSQLの2倍速い(らしい)
Fusic Co., Ltd. 58
Amazon Aurora
Fusic Co., Ltd. 59
Amazon Aurora
Amazon Aurora
・小さいインスタンスは提供されていない
・適切にI/O設計してから作らないと費用で
死ぬ
Fusic Co., Ltd. 60
Amazon Aurora
Amazon Aurora
・小さいインスタンスは提供されていない
・適切にI/O設計してから作らないと費用で
死ぬ
といった札束解法ではあり。
Fusic Co., Ltd. 61
Amazon Aurora
Amazon Aurora
・小さいインスタンスは提供されていない
・適切にI/O設計してから作らないと費用で
死ぬ
といった札束解法ではあり。
手を出した際にまた何か情報出します。
Fusic Co., Ltd. 62
CM
Fusic Co., Ltd. 63
CM
Fusic Co., Ltd. 64
CM
Fusic Co., Ltd.
ご清聴ありがとうございました。

RDS for PostgreSQLにまつわる雑多な話