17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuAdvent Calendar 2016

Day 9

Heroku Postgres でデータベースサイズ100G、最大レコード数1億行のデータを扱っている話

Posted at

#はじめに
この記事は、Heroku アドベントカレンダー 9日目です。

##環境
Heroku Postgres Premium系
PostgreSQL Version 9.4.x
データベースサイズ 100G超
テーブル数 100以上

#こまってたこと

  1. クエリが遅くなってきた(当然でしょw
  2. バックアップに時間がかかる。(当たり前・・・

せっかく、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でも、データベースは限界あるので自分でなんとかがんばらないといけないこともあるよね。

17
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?