Amazon Aurora with
PostgreSQL Compatibility
を評価して
SRA OSS, Inc. 日本支社
取締役支社長
SRA OSS, Inc.のご紹介
●1999年よりPostgreSQLサポートを中心にOSS
ビジネスを開始、2005年に現在の形に至る
●主なビジネス
●PostgreSQL, ZabbixなどのOSSのサポー
ト、コンサルティング、導入構築
●PowerGresファミリーの開発、販売
●PostgreSQL用の各種トレーニング実施
●商用DBからのマイグレーションコンサル
●OSS貢献
PostgreSQLの20年間の成長
●規模は
7倍以上に
● 20万ステップから
150万ステップに
●本格的な
RDBMSに
●トランザクション、行ロック、
MVCC、
SQL標準対応、本格的なクエリオプティマイザ
●高性能化
●マルチプロセッサ対応、パラレルクエリ、パーティショニング
●高可用性化
●レプリケーション
●多機能化
●全文検索、
JSON対応
●ユーザの熱い支持
●現在世界
29ヵ国に
55のコミュニティがある
商用DBからの乗り換え先として
●
Oracleからの移行先として注目されている
●
「もっともOracleから移行しやすいOSSデータベー
ス」と言う評判
●機能的に似ている
●複雑なクエリやジョインも問題なく実行できる
●信頼性が高い
PostgreSQL History
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 0 200,000 400,000 600,000 800,000 1,000,000 1,200,000 1,400,000 1,600,000 Trigger Sub-query Multi byte PL/pgSQL Row locks MVCC WAL log TOAST Concurrent Vacuum Windows Multi Processor HOT Full text search autovacuum Recursive SQL Window function Streaming replicationlines of code
true serializable isolation level Scale up to 80 cores Cascading replication Materialized view Foreign data wrapper JSONB Logical decoding UPSERT Parallel QueryLogical
Replication
Native
Partioning
1996
2017
PostgreSQLとAuroraの
機能ブロックの比較
信頼性・性能の高いDBエンジン
パラレル
クエリ
Read ScaleUp全文検索
GeoデータJSONRead Replica
信頼性・性能の高いDBエンジン
パラレル
クエリ
Read ScaleUp全文検索
GeoデータJSONAWS
独自
Read Replica
フェイルオーバ処理
高い
Write
性能
差し替え
追加
追加
PostgreSQL
PostgreSQL
Aurora
ここに注目!
*概念的な説明図であり、
実際のアーキテクチャを
表現しているわけでは
ありません。
エンジン部分
のコードは
変えていない
なぜWrite性能に着目するのか
●
Read性能を向上させる技術はすでにある
●スケールアウト
●パラレルクエリ
●
Write性能の向上は難しい
●アプリケーションレベルのシャーディングでwrite性能は
向上できるが、アプリケーションの変更が必要
●多くの試みがなされているが、まだ決定的なものはない
Auroraに乗り換えるだけで
Write性能が向上する?
●
そんなうまい話が本当にあるのか?
●
これは是非検証しなければ
...
検証環境
AZ1
AZ2
Amazon Aurora with PostgreSQL
Compatibility
db.r3.8x large
vCPU 32, mem: 244GB
AZ1
AZ2
Amazon RDS for PostgreSQL
db.r3.8x large
vCPU 32, mem:244GB
Provisioned IO (IOPS:
10000)
Amazon EC2
m4.10x large
vCPU 40
mem: 160GB
pgbench
Multi AZ
(バックアップ)
Writer
Reader
Shared Storage
Volume
Writer
検証用トランザクションの内容
●
同時接続数を250,500,750,1000と変化させ、そ
れぞれ1時間トランザクションを流し、実行できたト
ランザクション数を性能の指標とする
●
検証用テーブルは、一番大きいもので2億行。DBサ
イズは30GB
●
ひとつのトランザクションの中で、SELECTを1
回、UPDATEを3回、INSERTを1回実行する
初期データロード時間
RDS
Aurora
00:00:00 00:02:53 00:05:46 00:08:38 00:11:31 00:14:24 00:17:17 00:20:10Load
Vacuum
Index
Vacuum時間が
最も短縮されている
スループットの比較
250
500
750
1,000
0
2,000
4,000
6,000
8,000
10,000
12,000
14,000
16,000
18,000
20,000
Aurora
RDS
T
P
S
➔CPU利用率はAurora
が高い。RDSでは
ロック待ちが発生。
➔AuroraのIOPSが
少ない。書き込み
単位が大きいため。
応答時間の比較
0 5 10 15 20 25 30 35 40 45 50RDS
Aurora
La
te
n
cy
(
m
s)
250同時接続
1分間の推移
Auroraの応答時間は
非常に安定している
性能検証結果まとめ
●
Amazon Aurora for PostgreSQL Compatibility
は、Amazon RDSに比べ、
●
データロード時間は1/3
●
スループットは3倍
●
応答時間が短く、かつバラツキが少ない
Performance Insights
クエリの種類により
ボトルネックを
容易に特定できる
(この例では、
UPDATEでロック待ち
発生)
Read replicaの利用
●読み取りクエリの投げ先として利用
●複数のレプリカを用意して負荷分散可能
●レプリカに投げても良いクエリの識別は煩雑
●SELECT(の一部)
●LOCK(の一部)
●COPY TO
●
DECLARE, FETCH, CLOSE
●SHOW, SET, RESET
●
SAVEPOINTなど
●
PREPARE, EXECUTE, DEALLOCATE, DISCARD
●
LOAD
Pgpool-IIのご紹介
●SRA OSSが中心となって開
発しているOSSミドルウェア
●PostgreSQLの各種管理を
行う
●フェイルオーバ管理
●ノードの追加、削除
●リードレプリカへの負荷分散
管理
Pgpool-II
Pgpool-IIの負荷分散機能
●
クエリの内容を解析し、
Writer
、
read replica
へ自動振り
分けを行う
●
きめ細かな負荷分散管理機能
●
振り分けの際、ノードにより重み付けが可能
●