#はじめに
この記事は、Heroku アドベントカレンダー 9日目です。
##環境
Heroku Postgres Premium系
PostgreSQL Version 9.4.x
データベースサイズ 100G超
テーブル数 100以上
#こまってたこと
- クエリが遅くなってきた(当然でしょw
- バックアップに時間がかかる。(当たり前・・・
せっかく、Paas使っているのだからインフラで困りたくないじゃないですか! ということで、Herokuさんのスケーラビリティでどうにかならないか調べました。
#やったこと
###バックアップ作業を早くした
一時的にForkすることにしました。参考URLはこちら
https://devcenter.heroku.com/articles/heroku-postgres-data-safety-and-continuous-protection#combining-physical-and-logical-backups
上記により、バックアップにかかっていた時間が2時間から20分程度に短縮しました。(厳密には、Forkのあと2時間かかるのですがバックアップ後の予定していた作業に早く取り掛かれるし、切り戻しもForkをPromotionするだけなのでメリットがとても大きいです。)
###クエリを早くした
プランアップしました。・・・ だけじゃ追いつけなくてまじめにチューニングしました。
普通に、pg_stat_statementsを使って、Explainして、です・・・ ただし、ここでもForkがすごく便利!
本番に、カジュアルにインデックスとか張れないですし、うっかり重いクエリをなげられないじゃないですか。
そんなときは、ランチ前にForkして午後チューニング、帰宅前にForkをDestroyの繰り返しです。
参考
http://pgsqldeepdive.blogspot.jp/2012/12/sqlpgstatstatements.html
#これからやりたいこと
データベースのスケールアウトしたいです。 自動でスケールアウトできるようにならないでしょうかね。
Heroku Postgres On Pg-pool2 とかこないでしょうか。待ってます!
でも、実はこれとか Citus Data CloudとかこれとかもCitus - Add-ons - Heroku Elements超絶にwatchしております。
#まとめ
Heroku Postgres の Forkめちゃくちゃ便利なので使ってない方はバリバリ利用しましょう。
Paasでも、データベースは限界あるので自分でなんとかがんばらないといけないこともあるよね。