あくまで2015-10-04時点での話。
引用元へのリンクはなるべく残すので、原文と変わっていないことを必ず確認すること。
Google Cloud SQLそのものについての説明は割愛します。
料金プランの概要
Pricing - Cloud SQL — Google Cloud Platformにまとまっている。
英文だが比較的読みやすいし、日本語で読みたければ以下のページに翻訳された文章が書かれている(ただし価格が常時変動しているので参考程度にすること)。
- Google Cloud SQLの新規利用の概要 | 無料レンタルサーバ(格安・有料)情報のレンサバ.com
- Road to Happy Engineer: Google Cloud SQLの料金について(和訳)
Packages Billing Plan(Packages)とPer Use Billing Plan(Per Use)の違い
さて、Cloud SQLの料金体系について一番戸惑ったのがここである。
Packagesの場合、実際にそのDBが使用されているかどうかにかかわらずインスタンスの起動期間に合わせて料金が発生する。
対してPer Useの場合は1時間単位での使用に合わせて料金が発生するようだ。
疑問に思ったのがPer Useプランでの"使用"の概念で、どのような状態にあればそのインスタンスが使用状態だとされるのか。
答えはFAQの方にあり、FAQ - Cloud SQL — Google Cloud Platform - How is use of my instance calculated?によるとこう書かれている。
By default, your instance is spun up whenever you access it (whether from a SQL prompt, an external application, or from an App Engine application), and remains up for 15 minutes after the completion of the last access. After this time, the instance is shut down. You will not be charged for the time your database is not up.
標準では、あなたのインスタンスはあなたがアクセスすると(それがSQLプロンプト、外部アプリケーションまたはAppEngineアプリケーションであるかは問わない)スピンアップし、そして最後のアクセスの完了から15分後まで残り続ける。その後、このインスタンスはシャットダウンされる。あなたはあなたのデータベースがアップしていないこの時間は支払いが発生しない。
というわけで、DBのアクセスごとにUpし、最後のアクセスから15分後にはDown状態へ移行するらしい。
PackagesとPer Useどちらを選択するべきか
Tier D0で計算すると、Packagesでの一日あたりの料金は$0.36, それに対してPer Useでの1時間あたりの料金は$0.025である。
単純計算
0.36 \div 0.025 = 14.4
から一日平均14.4時間以上アクセスが発生するようなDBの使い方の場合、Packagesのほうがお得ということになる。
サーバーの起動ポリシーについて補足
Cloud SQLインスタンスを作成するときに以下のような起動ポリシーを選べる。
Per Useにもかかわらずここで常時起動を選択してしまうとPackagesより常に高い料金を支払い続けることになるので注意。