Upload
trinhdan
View
228
Download
0
Embed Size (px)
Citation preview
2 Copyright(c) 2017 SRA OSS, Inc. Japan
SRA OSS, Inc.のご紹介● 1999年よりPostgreSQLサポートを中心にOSS
ビジネスを開始、2005年に現在の形に至る● 主なビジネス
● PostgreSQL, ZabbixなどのOSSのサポート、コンサルティング、導入構築
● PowerGresファミリーの開発、販売● PostgreSQL用の各種トレーニング実施● 商用DBからのマイグレーションコンサル
● OSS貢献● PostgreSQL、Pgpool-IIの開発
3 Copyright(c) 2017 SRA OSS, Inc. Japan
PostgreSQLの20年間の成長● 規模は7倍以上に
● 20万ステップから150万ステップに● 本格的なRDBMSに
● トランザクション、行ロック、MVCC、SQL標準対応、本格的なクエリオプティマイザ● 高性能化
● マルチプロセッサ対応、パラレルクエリ、パーティショニング● 高可用性化
● レプリケーション● 多機能化
● 全文検索、JSON対応● ユーザの熱い支持
● 現在世界29ヵ国に55のコミュニティがある
4 Copyright(c) 2017 SRA OSS, Inc. Japan
商用DBからの乗り換え先として● Oracleからの移行先として注目されている● 「もっともOracleから移行しやすいOSSデータベー
ス」と言う評判● 機能的に似ている● 複雑なクエリやジョインも問題なく実行できる● 信頼性が高い
5 Copyright(c) 2017 SRA OSS, Inc. Japan
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.00
200,000
400,000
600,000
800,000
1,000,000
1,200,000
1,400,000
1,600,000
Trigger
Sub-queryMulti byte
PL/pgSQL
Row locksMVCC
WAL logTOAST
ConcurrentVacuum
Windows
Multi Processor
HOTFull textsearch
autovacuum
Recursive SQLWindow function
Streamingreplication
lines of code
true serializableisolation
level
Scale up to 80cores
Cascadingreplication
Materialized view
Foreign data wrapper
JSONBLogical
decoding
UPSERT
ParallelQuery
LogicalReplication
Native Partioning
1996 2017
6 Copyright(c) 2017 SRA OSS, Inc. Japan
PostgreSQLとAuroraの機能ブロックの比較
信頼性・性能の高いDBエンジン
パラレルクエリ
Read ScaleUp
全文検索 GeoデータJSON
Read Replica
信頼性・性能の高いDBエンジン
パラレルクエリ
Read ScaleUp
全文検索 GeoデータJSON
AWS独自Read Replica
フェイルオーバ処理
高いWrite性能
差し替え
追加
追加
PostgreSQLPostgreSQL Aurora
ここに注目!
*概念的な説明図であり、実際のアーキテクチャを表現しているわけではありません。
エンジン部分のコードは変えていない
7 Copyright(c) 2017 SRA OSS, Inc. Japan
なぜWrite性能に着目するのか● Read性能を向上させる技術はすでにある
● スケールアウト● パラレルクエリ
● Write性能の向上は難しい● アプリケーションレベルのシャーディングでwrite性能は向上できるが、アプリケーションの変更が必要
● 多くの試みがなされているが、まだ決定的なものはない
8 Copyright(c) 2017 SRA OSS, Inc. Japan
Auroraに乗り換えるだけでWrite性能が向上する?
● そんなうまい話が本当にあるのか?● これは是非検証しなければ...
9 Copyright(c) 2017 SRA OSS, Inc. Japan
検証環境
AZ1
AZ2
Amazon Aurora with PostgreSQLCompatibility
db.r3.8x largevCPU 32, mem: 244GB
AZ1
AZ2
Amazon RDS for PostgreSQL
db.r3.8x largevCPU 32, mem:244GBProvisioned IO (IOPS: 10000)
Amazon EC2m4.10x largevCPU 40mem: 160GB
pgbench
Multi AZ(バックアップ)
Writer
Reader
Shared StorageVolume
Writer
10 Copyright(c) 2017 SRA OSS, Inc. Japan
検証用トランザクションの内容● 同時接続数を250,500,750,1000と変化させ、そ
れぞれ1時間トランザクションを流し、実行できたトランザクション数を性能の指標とする
● 検証用テーブルは、一番大きいもので2億行。DBサイズは30GB
● ひとつのトランザクションの中で、SELECTを1回、UPDATEを3回、INSERTを1回実行する
11 Copyright(c) 2017 SRA OSS, Inc. Japan
初期データロード時間
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:10
LoadVacuumIndex
Vacuum時間が最も短縮されている
12 Copyright(c) 2017 SRA OSS, Inc. Japan
スループットの比較
250 500 750 1,0000
2,000
4,000
6,000
8,000
10,000
12,000
14,000
16,000
18,000
20,000
AuroraRDS
同時接続数
TP
S
➔CPU利用率はAuroraが高い。RDSではロック待ちが発生。➔AuroraのIOPSが少ない。書き込み単位が大きいため。
13 Copyright(c) 2017 SRA OSS, Inc. Japan
応答時間の比較
1 74 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 580
5
10
15
20
25
30
35
40
45
50
RDSAurora
Late
ncy
(m
s)
250同時接続1分間の推移
Auroraの応答時間は非常に安定している
14 Copyright(c) 2017 SRA OSS, Inc. Japan
性能検証結果まとめ● Amazon Aurora for PostgreSQL Compatibility
は、Amazon RDSに比べ、● データロード時間は1/3● スループットは3倍● 応答時間が短く、かつバラツキが少ない● 同時接続数が増えても性能の劣化が少ない
15 Copyright(c) 2017 SRA OSS, Inc. Japan
Performance Insights
クエリの種類によりボトルネックを容易に特定できる(この例では、UPDATEでロック待ち発生)
16 Copyright(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トランザクションの開始、終了
17 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-IIのご紹介● SRA OSSが中心となって開
発しているOSSミドルウェア● PostgreSQLの各種管理を
行う● フェイルオーバ管理● ノードの追加、削除● リードレプリカへの負荷分散管理
Pgpool-II
18 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-IIの負荷分散機能● クエリの内容を解析し、Writer、read replicaへ自動振り分けを行う
● きめ細かな負荷分散管理機能● 振り分けの際、ノードにより重み付けが可能● アプリケーション、データベース毎に振り分け先のノード
を指定できる
19 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-IIの負荷分散管理のイメージ参照クエリ
参照クエリのうち0%
プライマリ
スタンバイ スタンバイ
参照クエリのうち40 %
アプリケーション名やデータベース名で分散させることも可能
プライマリは更新処理に専念する
参照クエリのうち30 %
参照クエリのうち30 %
スタンバイ
20 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-IIの今後の計画● 現在はPostgreSQL(streaming
replication)、Amazon RDSに対応● Amazon Aurora for PostgreSQL Compatibilityへの対応は技術的には難しくないので、要望が多ければ対応します!