世間はお盆で会社にも人が少ないわけですが、今朝はHerokuのChangeLogが6件もあがってたよ。。。(--
そのほとんどがPostgres関連。
https://blog.heroku.com/archives/2014/8/12/the_new_database_experience_with_heroku_postgres
なんかまたプランが変わってプラン名もこれまでのYanariとかTenguとかの妖怪シリーズじゃなくなってStandard0とかPremium7とかの無味乾燥な名前になるようです。
なんだかちょっと残念。。。
まぁ妖怪シリーズもどれが強いのかがよくわからないという欠点はあったんですが、どうせならPiccolo、Begeta、Freezaとかの方が序列がわかって良かったかも(^^;
そんな今回のUpdate、ざっくりまとめると以下のような感じです。
★ Performance Analytics
6月頃に紹介されてたExpensive Queries ToolがGAになったってことかな?
https://postgres.heroku.com/
から使えます。
DBを選択すると遅いクエリのSQLを特定してくれて一週間分のそのクエリのパフォーマンスグラフを表示してくれます。
この手のパフォーマンス問題はインデックス一個追加するだけで劇的に改善されたりもするんですが、その手掛りとしては最高レベルの情報提供だと思います。
また、CLIで
heroku pg:diagnose
というコマンドが追加されました。
diagnoseは診断という意味ですが、このコマンドを実行するとRed、Yellow、Greenという診断結果と共に各診断項目のレポートが返ってきます。
診断項目としては
- Hit Rate
- Indexes
- Connection Count
- Long Queries
- Idle in Transaction
- Bloat
- Blocking Queries
- Load
があるようです。例えばIndexesであれば「このインデックス全く使われてないから削除した方が良いよ」みたいな提案がされます。
診断項目自体はHerokuの中の人が恣意的に決めたものだと思いますが、そこは十万単位のProductionデータベースを運用している人達です。きっと良い感じの提案をしてくれるのでしょう。(^^;
PostgreSQLにはデフォルトで収集されているパフォーマンス改善のための統計情報テーブルがたくさんあるんですが、よっぽど必要に迫られた時以外はそれらの見方を調べようとは思わない訳で、それがコマンド一つでエキスパートによるレポートとして返ってくるというのはかなりイケてる話だと思います。
もっとも、手元のDBでいくつか試してみたところHit Rate以外はAll Greenになるのでどんなレポートが返ってくるのかイマイチありがたみがよくわかりませぬ。(^^;;;
★ Continuous Protection と On-disk Encryption
Premiumプランでは継続的なDB保護とDB自体の暗号化がされます。
DB暗号化は特に説明不要かと思いますが、Continuous Protectionってのはなんなんでしょうね?
60秒おきの新データのアーカイブとか30秒おきのヘルスチェックとか書かれてますが、要するにHA(High Availabity)を担保するためにこんなことしてますよ、ってことではないかと。
PremiumプランのHAオプションは、元々裏でFollow DBが自動的に作られて障害時には自動的に切り替わるというものなので、その安全性がさらに高まったという話なんだと理解しました。
★ 2倍のメモリ、3倍のパフォーマンス
これが今回の発表で一番重要な情報です。
新プランのラインアップは完全に旧プランと対応していて、旧プランの価格と同じ価格のプランがすべて揃っていますが、価格は同じでもメモリは2倍、パフォーマンスは計測上は3倍になっています。
ただし、この恩恵を受けるためには明示的にAddonをアップデートする必要があります。(メモリが変わるってことはPostgresが実行されているホストも切り替わるから)
https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases
pgbackups:transfer というコマンドが追加されて移行も簡単にできるようになったみたいですね。
ProductionプランでHeroku Postgresを運用している人は早めに切り替えた方が良いでしょう。
★ PremiumとStandardの違い
最後にStandardプランとPremiumプランの違いをまとめておきます。
違いは全プラン共通で以下の3点です。
- Encryptionされない
- Rollback可能な時間が60分(Premiumは7日間)
- High Availabilityじゃない
Rollbackはそう言えばそんな機能あったなぁ、と今思い出しましたが過去にブログ書いてます。
http://blog.flect.co.jp/labo/2013/11/heroku-postgres-62fb.html
読み返すと旧バージョンではRollback可能な期間がプラン毎にバラバラだったのが今回60分と7日間に統一されたようですね。
さすがに一ヵ月はやりすぎだと気が付いたらしい。(^^;
個人的にはStanndardの60分は短すぎて実質的には使えないような気がしますが、実際のところはどうなんでしょうね? 逆に過去の統計からRollbackが使われる場合の期間の大半はこれで十分という判断があったのかも。
まぁ、実際には一度も使ったことがないのでどうでも良いんですけどね。(^^;;;
やっぱりStandardとPremiumの選択時のポイントはHAの有無だと思います。