Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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

niseissa
WEBグループウェアエンジニアを5年、プロジェクトマネージャを5年、プロダクトマネージャを5年 デジタルマーケティングやインフラアーキ手クシャ、DBアーキテクチャ、ビジネスドメイン知識(HRと会計) もってます。 Salesfoceレンジャー持ち
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away