狠狠撸

狠狠撸Share a Scribd company logo
Update 2010/7/21
Amazon RDSを参考にした
とりまチューニング
2016/08/19 関?地区PostgreSQL勉強会
株式会社ロックオン 三原俊介
1
Update 2010/7/21
??紹介
2
2012.04 株式会社ロックオン?社
インフラユニット
現在 マーケティングPF 開発部
主にインフラ全般、開発環境の改善、
ロックオフの管理?などなどやってます
三原 俊介– Shunsuke Mihara
??紹介3
始める前のアンケート4
質問: みなさんDBのチューニング経験はありますか
1. PostgreSQLを使ったことがある?
2. PostgreSQLのチューニングをしたことがある?
3. MySQLを使ったことがある?
4. MySQLのチューニングをしたことがある?
今回のテーマ5
DBの初期構築時に
最低限調整しておきたいパラメータ
?次
1.チューニングの必要性 と とりまチューニング
2.Amazon RDS
3.PostgreSQLのとりまチューニング
4.(おまけ) MySQLのとりまチューニング
Update 2010/7/21
チューニングの必要性 と とりまチューニング
6
チューニングの必要性7
そもそもDBの構築直後(実装フェイズ前)に
チューニングは必要ない
1. 性能改善は欲を出せばキリがない
達成するべき?標値が決まった上で、どうやれ
ば達成できるかボトルネックを考慮して実施
2. 基準となるDBのアクセス傾向が必要
とりまチューニング8
とはいえ、 DBのデフォルト値から
とりあえず、まあ変更した?が良い値はあります
なぜデフォルトが最適な初期値になっていないのか
1. 最低限のスペックで動作させるための値
2. 安全側に倒した値
3. 1,2の項?と連動させないと意味が無い値
では、何を基準としてとりまチューニングを?うか
Update 2010/7/21
Amazon RDS
9
AWSのRDBサービス Amazon RDS10
Amazon RDSのデフォルト値を
とりまチューニングの参考にします
1. デフォルトでチューニング済みの設定で起動
2. RDSのスペックに合わせて動的に設定
3. 世の中で広く使われているDB設定
[注意] RDSのデフォルトパラメータは、Linuxの
DB専?サーバを想定したパラメータ WEBとの同居や
Windowサーバ
だと適切ではな
い場合がある
とりまチューニング項?の調査観点11
「スペックに連動する値」と
「DBデフォルトの値との差分」に着?
スペックの違うRDS2台を?較
→ どの値はスペックに合わせて変更するべきか
RDSとオンプレにインストールしたDBを?較
→ どの値はスペックに関わらず変更するべきか
とりまチューニング項?の調査?法12
DB3台を?意し、パラメータを?較
1. インスタンスタイプ(スペック)の違うRDSを2
台起動
2. オンプレに同バージョンのDBをインストール
3. DBに?り設定値を取得
A) PostgreSQLならば「SHOW ALL;」
B) MySQLならば「SHOW VARIABLES;」
13 ?較表を作成して確認
Update 2010/7/21
PostgreSQLのとりまチューニング
14
RDSのPostgreSQL 9.5.2 設定15
スペックと連動する値 4項?
DBデフォルト値と差分がある値 53項?
全パラメータ238項?中
1.スペックと連動する値
shared_buffers, effective_cache_size, max_connections, wal_buffers
2.DBデフォルト値と差分がある値
※53項?は多いので以下に絞ってご紹介
autovacuum系, チェックポイント系, 多?語対応系
shared_buffers16
shared_buffersはサーバメモリの1/4
■shared_buffersとは
データベースサーバが使?する共有メモリバッファ
のために使?するメモリ量
公式ドキュメント
にも25%(1/4)が
良いよと書いて
ある
effective_cache_size17
effective_cache_sizeはサーバメモリの1/2
■effective_cache_sizeとは
プランナーがインデックススキャンかシーケンシャ
ルスキャンかの判断に利?する参考値
PostgreSQL	wiki
にも全メモリの
1/2が保守的な
設定と記載
max_connectionsとwal_buffers18
max_connectionsはサーバメモリ128KB毎1増加
wal_buffersはデフォルト設定で?動調整
■max_connectionsとは
DBへの同時コネクション数の最?
■wal_bufferとは
トランザクションログを書き出すバッファ
デフォルトの?動設定でshared_buffersの1/32
autovacuum系19
analyzeとvacuumが頻度良く発?するように
トリガーとなる値を半分に調整
■ autovacuum_naptime 60 → 30
autovacuumを起動する間隔を秒単位で指定
■ autovacuum_analyze_scale_factor 0.1 → 0.05
ANALYZEを起動するトリガとなる更新?数の割合
■ autovacuum_vacuum_scale_factor 0.2 → 0.1
VACUUMを起動するトリガとなる更新?数の割合
チェックポイント系20
チェックポイントの書き出し処理を分散し、
負荷を減らすように調整(リカバリ時間は増加)
■ チェックポイントとは
PostgreSQLの共有バッファとディスク間の整合性
を取る処理
Update	○
Insert	△
????
同期
(チェックポイント)
チェックポイント系21
チェックポイントの書き出し処理を分散し、
負荷を減らすように調整(リカバリ時間は増加)
■ checkpoint_completion_target 0.5 → 0.9
チェックポイントの書き出し処理が、この値の割合に
なるように調整されて、チェックポイントが実?
■ max_wal_size 1GB → 2GB
■ min_wal_size 80MB → 256MB
※9.5でcheckpoint_segmentsの代わりに導?
多?語対応系22
マルチバイト?字を扱いやすいように設定
■ lc_collate C → en_US.UTF-8
■ lc_ctype C → en_US.UTF-8
DB作成時の多?語対応のベースになる値
※ DB作成後変更できない値のためハマりやすい
?本での利?の場合、とりま「jp_JP.UTF-8」で
PostgreSQLのとりまチューニング まとめ23
RDSでデフォルトでチューニングされているもの
1. shared_buffersはサーバメモリの1/4
2. effective_cache_sizeはサーバメモリの1/2
3. max_connectionsはサーバメモリ128kB毎1増加
4. wal_buffersはデフォルト設定で?動調整
5. autovacuumはトリガーとなる値を半分に調整
6. チェックポイントの書き出し処理を分散
7. マルチバイト?字を扱いやすいように設定
Update 2010/7/21
(おまけ)MySQLのとりまチューニング
24
RDSのMySQL 5.6.27 設定25
スペックと連動する値 5項?
DBデフォルトとの値の差分 83項?
全パラメータ455項?中
1. スペックと連動する値
innodb_buffer_pool_size, max_connections,
back_log, host_cache_size, thread_cache_size
2. デフォルトとの差分
※今回は省略
innodb_buffer_pool_size26
innodb_buffer_pool_sizeはサーバメモリの3/4
■ innodb_buffer_pool_sizeとは
InnoDBのバッファープールのサイズ
公式ドキュメント
には、特に良い
値について言及
は無し
max_connections27
max_connectionsはサーバメモリ1.5MB毎1増加
■max_connectionsとは
DBへの同時コネクション数の最?
(PostgreSQL の 128KB毎より?きい)
ほかのパラメータ28
残りの3パラメータは、RDSのインスタンスタイプ
にひもづくパラメータがあるらしくロジックが不明
db.t2.micro
VCPU1	メモリ1GiB
db.t2.medium
VCPU2	メモリ4GiB
back_log 63 112
host_cache_size 194 440
thread_cache_size 66 312
?サーバとほぼ同じスペックのRDSを?てて
パラメータを確認するのが良いのでは?
MySQLのとりまチューニング まとめ29
RDSでデフォルトでチューニングされているもの
1. innodb_buffer_pool_sizeはサーバメモリの3/4
2. max_connectionsはサーバメモリ1.5MB毎1増加
3. その他パラメータは、同じくらいのRDSを?てて値
を確認する
Update 2010/7/21
まとめ
30
RDSを参考にしたとりまチューニングをご紹介
まとめ31
あくまでとりまチューニング
デフォルト設定よりマシな環境を作るのが?的
チューニングは、?標数値をもって実施するべき
DB毎にチューニングの定?を紹介したサイトは多
くあるので、RDS以外にも参考にしてください

More Related Content

Amazon RDSを参考にしたとりまチューニング