Aurora PostgreSQLのIO料金について
Auroraのコストは大きく下記の4つに分類される。RDS PostgreSQL等の他のRDBMS系のデータベースサービスはIO料金が掛からず、それもあってかAuroraのIO料金は見積もりにも見落としがちとなる。(IO料金についてはインスタンス料金の数%から高くても10%に収まる感触を持っているが、データベースの使い方によっては高い料金になる可能性もある。)
- インスタンス料金
- データベースストレージ
- IO料金
- データ転送量
詳細は下記をご参照。クローニングやグローバルデータベースの利用料については使い方によるので省略。
料金 - Amazon Aurora | AWS https://aws.amazon.com/jp/rds/aurora/pricing/
東京リージョンのIO料金については0.24USD/100 万リクエスト
となる。また、各データページで最大 4KB の変更に対して 1 回の I/O オペレーションを課金される。仮に秒間2000IOPS発生するワークロードあった場合の月額費用は下記で計算される。(なお、秒間2,000IOPSというワークロードはあくまでも目安として。)
1,000 Reads/Second + 1,000 Writes/Second = 2,000 Number of I/Os per second
2,000 I/Os per second x 730 hours x 60 minutes x 60 Seconds = 5,256,000,000 Number of I/Os per month
5,256,000,000 x 0.00000024 USD = 1,261.44 USD (I/O Rate Cost)
なお、料金自体はPricing Calculatorで計算出来る。
AuroraのIO料金が高いときには下記を確認する。
- CloudWatchで
Billed IOPS
を確認する- スパイクしている際にどんなオペレーションをやっているか確認してIO量を減らせないか確認する
- pg_dump、バッチ処理、フルスキャン等
- スパイクしている際にどんなオペレーションをやっているか確認してIO量を減らせないか確認する
Performance Insights
でIO: DataFileRead
やIO:DataFilePrefetch
あたりが発生しているSQLを確認する- バッファキャッシュヒット率を確認する
- データファイルI/Oが発生しているのでオンメモリになるようにパラメータを調整
IO料金を下げるためのアクションとしては下記が中心となる
- メモリを大きくしてオンメモリで処理出来るようにする
- フルスキャン系のSQLをチューニングする
- インデックスやパーティションを使って不要なIOを削減する
追記(2022/02/02)
次の記事も参考になる、というか2022年1月に公式から出たAWS Database Blogをしっかり読んだ方が良い。
関連しているかもしれない記事
- Aurora PostgreSQLのフェイルオーバー時間の計測
- Aurora PostgreSQLとRDSの比較メモ(リンク集)
- PostgreSQLでNOLOGGINGテーブル(UNLOGGED)に大量データをロード
- AuroraとNeptuneのメンテナンス(パッチ適用)について
- RDSとAuroraで変更を検討するパラメータ(PostgreSQL)