Amazon Aurora with
PostgreSQL Compatibilityを評価してSRA OSS, Inc. 日本支社
取締役支社長石井 達夫

SRA OSS, Inc.のご紹介●●●

1999年よりPostgreSQLサポートを中心にOSSビジネスを開始、2005年に現在の形に至る
主なビジネス●
PostgreSQL, ZabbixなどのOSSのサポー
ト、コンサルティング、導入構築●
PowerGresファミリーの開発、販売●
PostgreSQL用の各種トレーニング実施●
商用ＤＢからのマイグレーションコンサル
OSS貢献●
PostgreSQL、Pgpool-IIの開発
2Copyright(c) 2017 SRA OSS, Inc. Japan

PostgreSQLの20年間の成長●

規模は7倍以上に●●本格的なRDBMSに●●レプリケーション

多機能化
●

●

マルチプロセッサ対応、パラレルクエリ、パーティショニング

高可用性化
●

●

トランザクション、行ロック、MVCC、SQL標準対応、本格的なクエリオプティマイザ高性能化●●

20万ステップから150万ステップに全文検索、JSON対応

ユーザの熱い支持●

現在世界29ヵ国に55のコミュニティがある

3Copyright(c) 2017 SRA OSS, Inc. Japan

商用ＤＢからの乗り換え先としてOracleからの移行先として注目されている●「もっともOracleから移行しやすいOSSデータベース」と言う評判●

機能的に似ている●
複雑なクエリやジョインも問題なく実行できる●
信頼性が高い●4Copyright(c) 2017 SRA OSS, Inc. Japan

PostgreSQL History
lines of code
1,600,000

JSONB
Logicaldecoding

LogicalReplication

Materializedview
Foreign datawrapper

NativePartioning

Streaming
replication

1,400,000
1,200,000

Multi
Processor

Sub-query
Multi byte

1,000,000

UPSERT

Recursive SQLWindow function

Scale up to 80
cores
Cascadingreplication

WAL log
TOAST

800,000
PL/pgSQL

600,000

Trigger

400,000
200,000

Row locks
MVCC0

Concurrent
VacuumWindowsHOT
Full text
searchautovacuum

ParallelQuerytrue serializable
isolationlevel

6.1 6.2 6.3 6.4 6.5 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4 9.0 9.1 9.2 9.3 9.4 9.5 9.6 10.0

1996

2017

5Copyright(c) 2017 SRA OSS, Inc. Japan

PostgreSQLとAuroraの機能ブロックの比較
PostgreSQL

AuroraGeoデータ
JSON

全文検索

全文検索

GeoデータJSON

信頼性・性能の高いＤＢエンジン

信頼性・性能の高いＤＢエンジン

パラレル
Read ScaleUp
クエリ
Read Replicaパラレルクエリ＊概念的な説明図であり、実際のアーキテクチャを表現しているわけではありません。

6

差し替え

Read ScaleUp

AWS独自Read Replica

追加

フェイルオーバ処理追加

高いWrite性能

ここに注目！
Copyright(c) 2017 SRA OSS, Inc. Japan

エンジン部分のコードは変えていない

なぜWrite性能に着目するのか●

Read性能を向上させる技術はすでにある
スケールアウト●
パラレルクエリ●●

Write性能の向上は難しい
アプリケーションレベルのシャーディングでwrite性能は向上できるが、アプリケーションの変更が必要●
多くの試みがなされているが、まだ決定的なものはない●

7

Copyright(c) 2017 SRA OSS, Inc. JapanAuroraに乗り換えるだけでWrite性能が向上する？
そんなうまい話が本当にあるのか？
●
これは是非検証しなければ...
●

8Copyright(c) 2017 SRA OSS, Inc. Japan検証環境
Amazon Aurora with PostgreSQL
Amazon RDS for PostgreSQL
Compatibility

db.r3.8x large
vCPU 32, mem:244GB
Provisioned IO (IOPS:10000)
Writerdb.r3.8x large
vCPU 32, mem: 244GB

pgbenchAZ1Multi AZ(バックアップ)
AZ2

AZ1

Amazon EC2m4.10x large
vCPU 40
mem: 160GB

Shared Storage
VolumeAZ29Copyright(c) 2017 SRA OSS, Inc. Japan

WriterReader検証用トランザクションの内容
同時接続数を250,500,750,1000と変化させ、それぞれ1時間トランザクションを流し、実行できたト
ランザクション数を性能の指標とする●
検証用テーブルは、一番大きいもので2億行。ＤＢサイズは30GB●
ひとつのトランザクションの中で、SELECTを1回、UPDATEを3回、INSERTを1回実行する●

10Copyright(c) 2017 SRA OSS, Inc. Japan

初期データロード時間
AuroraLoad
VacuumIndex
RDS

Vacuum時間が最も短縮されている
00:00:00 00:02:53 00:05:46 00:08:38 00:11:31 00:14:24 00:17:17 00:20:10

11Copyright(c) 2017 SRA OSS, Inc. Japanスループットの比較
20,00018,00016,00014,000TPS

12,00010,000

Aurora
RDS

8,000
6,000
4,000
2,000
0

CPU利用率はAuroraが高い。RDSではロック待ちが発生。
➔AuroraのIOPSが少ない。書き込み単位が大きいため。
➔250

500

750

1,000

同時接続数
12Copyright(c) 2017 SRA OSS, Inc. Japan

応答時間の比較
504540250同時接続
1分間の推移Latency (ms)3530RDSAurora

25201510

Auroraの応答時間は非常に安定している

5014137101316192225283134374043464952

Copyright(c) 2017 SRA OSS, Inc. Japan5558

性能検証結果まとめ●Amazon Aurora for PostgreSQL Compatibility
は、Amazon RDSに比べ、●データロード時間は1/3●
スループットは3倍●応答時間が短く、かつバラツキが少ない●
同時接続数が増えても性能の劣化が少ない
14Copyright(c) 2017 SRA OSS, Inc. Japan

Performance Insights

クエリの種類によりボトルネックを容易に特定できる（この例では、UPDATEでロック待ち発生)

15Copyright(c) 2017 SRA OSS, Inc. Japan

Read replicaの利用
読み取りクエリの投げ先として利用●
複数のレプリカを用意して負荷分散可能●
レプリカに投げても良いクエリの識別は煩雑●

SELECT(の一部)●LOCK(の一部)●
COPY TO●DECLARE, FETCH, CLOSE●
SHOW, SET, RESET●SAVEPOINTなど●
PREPARE, EXECUTE, DEALLOCATE, DISCARD●LOAD●
Read onlyトランザクションの開始、終了●

16

Copyright(c) 2017 SRA OSS, Inc. Japan

Pgpool-IIのご紹介
SRA OSSが中心となって開発しているOSSミドルウェア●
PostgreSQLの各種管理を行う●

フェイルオーバ管理●
ノードの追加、削除●
リードレプリカへの負荷分散管理●

17

Copyright(c) 2017 SRA OSS, Inc. Japan

Pgpool-IIPgpool-IIの負荷分散機能
クエリの内容を解析し、Writer、read replicaへ自動振り分けを行う●
きめ細かな負荷分散管理機能●

振り分けの際、ノードにより重み付けが可能●
アプリケーション、データベース毎に振り分け先のノードを指定できる●

18

Copyright(c) 2017 SRA OSS, Inc. Japan

Pgpool-IIの負荷分散管理のイメージ参照クエリ

プライマリは更新処理に専念する

参照クエリのうち0%
参照クエリのうち参照クエリのうち

30 %

40 %

プライマリ

スタンバイ

アプリケーション名やデータベース名で分散させることも可能

参照クエリのうちスタンバイ

19

スタンバイ
Copyright(c) 2017 SRA OSS, Inc. Japan

30 %Pgpool-IIの今後の計画
現在はPostgreSQL(streamingreplication)、Amazon RDSに対応●Amazon Aurora for PostgreSQL Compatibility
への対応は技術的には難しくないので、要望が多ければ対応します！
●20

Copyright(c) 2017 SRA OSS, Inc. JapanThank you!

21Copyright(c) 2017 SRA OSS, Inc. Japan