amazon rdsを参考にしたとりまチューニング
TRANSCRIPT
![Page 1: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/1.jpg)
Update 2010/7/21
Amazon RDSを参考にした とりまチューニング
2016/08/19 関西地区PostgreSQL勉強会
株式会社ロックオン 三原俊介
1
![Page 2: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/2.jpg)
Update 2010/7/21
自己紹介
2
![Page 3: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/3.jpg)
2012.04 株式会社ロックオン入社 インフラユニット
現在 マーケティングPF 開発部
主にインフラ全般、開発環境の改善、 ロックオフの管理人などなどやってます
三原 俊介– Shunsuke Mihara
自己紹介 3
![Page 4: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/4.jpg)
始める前のアンケート 4
質問: みなさんDBのチューニング経験はありますか
1. PostgreSQLを使ったことがある方
2. PostgreSQLのチューニングをしたことがある方
3. MySQLを使ったことがある方
4. MySQLのチューニングをしたことがある方
![Page 5: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/5.jpg)
今回のテーマ 5
DBの初期構築時に
最低限調整しておきたいパラメータ
目次
1. チューニングの必要性 と とりまチューニング
2. Amazon RDS
3. PostgreSQLのとりまチューニング
4. (おまけ) MySQLのとりまチューニング
![Page 6: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/6.jpg)
Update 2010/7/21
チューニングの必要性 と とりまチューニング
6
![Page 7: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/7.jpg)
チューニングの必要性 7
そもそもDBの構築直後(実装フェイズ前)に
チューニングは必要ない
1. 性能改善は欲を出せばキリがない
達成するべき目標値が決まった上で、どうやれ
ば達成できるかボトルネックを考慮して実施
2. 基準となるDBのアクセス傾向が必要
![Page 8: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/8.jpg)
とりまチューニング 8
とはいえ、 DBのデフォルト値から
とりあえず、まあ変更した方が良い値はあります
なぜデフォルトが最適な初期値になっていないのか
1. 最低限のスペックで動作させるための値
2. 安全側に倒した値
3. 1,2の項目と連動させないと意味が無い値
では、何を基準としてとりまチューニングを行うか
![Page 9: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/9.jpg)
Update 2010/7/21
Amazon RDS
9
![Page 10: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/10.jpg)
AWSのRDBサービス Amazon RDS 10
Amazon RDSのデフォルト値を
とりまチューニングの参考にします
1. デフォルトでチューニング済みの設定で起動
2. RDSのスペックに合わせて動的に設定
3. 世の中で広く使われているDB設定
[注意] RDSのデフォルトパラメータは、Linuxの
DB専用サーバを想定したパラメータ WEBとの同居やWindowサーバ
だと適切ではない場合がある
![Page 11: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/11.jpg)
とりまチューニング項目の調査観点 11
「スペックに連動する値」と
「DBデフォルトの値との差分」に着目
スペックの違うRDS2台を比較
→ どの値はスペックに合わせて変更するべきか
RDSとオンプレにインストールしたDBを比較
→ どの値はスペックに関わらず変更するべきか
![Page 12: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/12.jpg)
とりまチューニング項目の調査方法 12
DB3台を用意し、パラメータを比較
1. インスタンスタイプ(スペック)の違うRDSを2
台起動
2. オンプレに同バージョンのDBをインストール
3. DBに入り設定値を取得
A) PostgreSQLならば「SHOW ALL;」
B) MySQLならば「SHOW VARIABLES;」
![Page 13: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/13.jpg)
13 比較表を作成して確認
![Page 14: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/14.jpg)
Update 2010/7/21
PostgreSQLのとりまチューニング
14
![Page 15: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/15.jpg)
RDSのPostgreSQL 9.5.2 設定 15
スペックと連動する値 4項目
DBデフォルト値と差分がある値 53項目
全パラメータ238項目中
1. スペックと連動する値
shared_buffers, effective_cache_size, max_connections, wal_buffers
2. DBデフォルト値と差分がある値
※53項目は多いので以下に絞ってご紹介
autovacuum系, チェックポイント系, 多言語対応系
![Page 16: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/16.jpg)
shared_buffers 16
shared_buffersはサーバメモリの1/4
■shared_buffersとは
データベースサーバが使用する共有メモリバッファ
のために使用するメモリ量
公式ドキュメントにも25%(1/4)が
良いよと書いてある
![Page 17: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/17.jpg)
effective_cache_size 17
effective_cache_sizeはサーバメモリの1/2
■effective_cache_sizeとは
プランナーがインデックススキャンかシーケンシャ
ルスキャンかの判断に利用する参考値
PostgreSQL wiki
にも全メモリの1/2が保守的な設定と記載
![Page 18: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/18.jpg)
max_connectionsとwal_buffers 18
max_connectionsはサーバメモリ128KB毎1増加
wal_buffersはデフォルト設定で自動調整
■max_connectionsとは
DBへの同時コネクション数の最大
■wal_bufferとは
トランザクションログを書き出すバッファ
デフォルトの自動設定でshared_buffersの1/32
![Page 19: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/19.jpg)
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を起動するトリガとなる更新行数の割合
![Page 20: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/20.jpg)
チェックポイント系 20
チェックポイントの書き出し処理を分散し、
負荷を減らすように調整(リカバリ時間は増加)
■ チェックポイントとは
PostgreSQLの共有バッファとディスク間の整合性
を取る処理
Update ○ Insert △ ・・・・
同期
(チェックポイント)
![Page 21: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/21.jpg)
チェックポイント系 21
チェックポイントの書き出し処理を分散し、
負荷を減らすように調整(リカバリ時間は増加)
■ checkpoint_completion_target 0.5 → 0.9
チェックポイントの書き出し処理が、この値の割合に
なるように調整されて、チェックポイントが実行
■ max_wal_size 1GB → 2GB
■ min_wal_size 80MB → 256MB
※9.5でcheckpoint_segmentsの代わりに導入
![Page 22: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/22.jpg)
多言語対応系 22
マルチバイト文字を扱いやすいように設定
■ lc_collate C → en_US.UTF-8
■ lc_ctype C → en_US.UTF-8
DB作成時の多言語対応のベースになる値
※ DB作成後変更できない値のためハマりやすい
日本での利用の場合、とりま「jp_JP.UTF-8」で
![Page 23: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/23.jpg)
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. マルチバイト文字を扱いやすいように設定
![Page 24: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/24.jpg)
Update 2010/7/21
(おまけ)MySQLのとりまチューニング
24
![Page 25: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/25.jpg)
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. デフォルトとの差分
※今回は省略
![Page 26: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/26.jpg)
innodb_buffer_pool_size 26
innodb_buffer_pool_sizeはサーバメモリの3/4
■ innodb_buffer_pool_sizeとは
InnoDBのバッファープールのサイズ
公式ドキュメントには、特に良い値について言及
は無し
![Page 27: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/27.jpg)
max_connections 27
max_connectionsはサーバメモリ1.5MB毎1増加
■max_connectionsとは
DBへの同時コネクション数の最大
(PostgreSQL の 128KB毎より大きい)
![Page 28: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/28.jpg)
ほかのパラメータ 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を立てて
パラメータを確認するのが良いのでは?
![Page 29: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/29.jpg)
MySQLのとりまチューニング まとめ 29
RDSでデフォルトでチューニングされているもの
1. innodb_buffer_pool_sizeはサーバメモリの3/4
2. max_connectionsはサーバメモリ1.5MB毎1増加
3. その他パラメータは、同じくらいのRDSを立てて値
を確認する
![Page 30: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/30.jpg)
Update 2010/7/21
まとめ
30
![Page 31: Amazon RDSを参考にしたとりまチューニング](https://reader031.vdocuments.net/reader031/viewer/2022012312/587b36a21a28ab057d8b7317/html5/thumbnails/31.jpg)
RDSを参考にしたとりまチューニングをご紹介
まとめ 31
あくまでとりまチューニング
デフォルト設定よりマシな環境を作るのが目的
チューニングは、目標数値をもって実施するべき
DB毎にチューニングの定石を紹介したサイトは多
くあるので、RDS以外にも参考にしてください