Azure SQL Database で、データを Insert したり Delete したり、ときにはデータベースを CREATE したり DROP したりしていたら、無料評価版の有効期限を30日残して Azure SQL Database の使用制限に達してしまった。
てっきり、データベースに保存しているデータのサイズで課金されると思っていた。Webエディション1GBなら、データのサイズが1GB以内に収まっている間は定額、って思っていたら違ったみたい。
@t_nakamura 一瞬でも保存すれば課金対象だお。
2012-06-19 10:26:10 via web to @t_nakamura
日割りでその日利用した分課金されます QT @t_nakamura: Azure SQL データベースにデータをInsertしたりDeleteしたり、データベースをDropしてCreateしたりしてたら、全然データ保存してないのに無料分を使い果たしてしまった。 #azurejp
2012-06-19 10:27:25 via Krile2 to @t_nakamura
@t_nakamura たとえば100MBまで436.62円/月だから、データベースつくって100MB使うまでが月436.62円、消してつくるとその436.62円とは別にまた436.62円/月。あと10GBのテーブルつくると4,016.84円かかる。データベースも消してない?
2012-06-19 10:46:08 via web to @t_nakamura
@t_nakamura ちょっとだけ補足すると最大使用量で課金だけれどBussinessだと0.1GBしかつかってなくても最小10GBまでという使用量枠で計算されます。Web版でも最小の1GBまで枠として。
2012-06-19 10:55:12 via web to @t_nakamura
@t_nakamura SQLは、「ユーザーDBごとに」1日の最大データ量日割り課金されるので、DBの作成/削除を繰り返すと、作成したDBごとにその日の課金が行われます。ご注意を。 #azurejp
2012-06-19 10:59:36 via HootSuite to @t_nakamura
『料金の詳細』ページを何度も読み直してみた。
使用される SQL データベースごとに月額料金が課金されますが、このデータベース料金はその月の日数で按分され、日割りで計算されます。データベースが 1 GB を超える場合、超過した GB 分全体に対して課金されます。たとえば、4.4 GB と 14.4 GB の 2 つの Business Edition データベースを請求月中の 1 日に使用した場合、その日については 5 GB および 15 GB のデータベース使用料が課金され、合計は \231.03 になります。計算式は次のとおりです。
- 5 GB: (\873.23 (最初の 1 GB) + \349.30 (残りの 4 GB の 1 GB あたりの料金)) / 31 日 = \73.25
- 15 GB: (\4,016.84 (最初の 10 GB) + \174.65 (残りの 5 GB の 1 GB あたりの料金)) / 31 日 = \157.78
イマイチ分からない。
料金の詳細ページよりも、次の記事の方が詳しかった。
SQL Azure の課金に関する基本的なポイント
- SQL Azure の課金は、Web Edition と Business Edition とで分かれている。
- 例えば、Business Edition を含んだコミットメントプランを購入したサブスクリプションで、Web Edition データベースを利用すると、コミットメントプランに含まれないデータベースを使ったものとみなされ、従量課金されてしまう。
- データベースは、実際のデータベースサイズ(Current Size)に基づき、日割りで課金される。
- 料金表は月あたりの金額で書かれているが、課金は日割りで行われる。(日割り計算の詳細なロジックは後述)
- master データベース、temp データベースなどは課金対象外。
- ユーザデータベースのみが課金対象になる。
- データ量は、テーブル内のデータの量だけでなく、インデックスデータの量なども含まれるが、ログデータは含まれない。(簡単に言えば .mdf データファイルの容量であり、.ldf ログファイルの容量は含まれない)
課金の日割り計算に関するキーポイント
- 従量課金の場合
- その日のピークデータ量(Current Size)に基づいて、日割りで課金される。(データベース定義上のMAXSIZEではない)
- どの月であっても、常に”31”で日割り計算が行われる。(30日以下の月であっても、31で日割り計算が行われる)
- コミットメントプランの場合
- 基本的には、従量課金と同じ方式で計算が行われる。
- しかし、その月の利用量が購入ユニット数よりも少なかった場合には、購入ユニット数まで繰り上げが行われる。
- この繰り上げ計算は「月」単位で行われる。
公式もこれくらい詳しく書いてほしいね。
これらを読んで、自分の中では今のところ
- ユーザーが作成したデータベースごとに課金される
- 2つデータベースを作ったら2つぶん課金される
- 同じ日にデータベースを削除して作り直したら、その日は2つデータベースを使ったとみなされる
- 1日の瞬間最大データベースサイズをもとに日額が決まる。
- 計算式は引用の通り。
- Insert・Update でデータが増えれば、データ使用量は増える。
- Update でデータが減ったり、Delete で削除した場合は、データ使用量は減る。
のように解釈したけど、Azure SQL Database の課金の仕様はややこしすぎて自信無し。
2012/06/25 追記
Microsoft に問い合わせてみた。
- 1日の間に、1GB Insert して、1GB Delete して、また 1GB Insert したときの課金対象となるデータ使用量は?
- 2GB が課金対象になる。
- 既に 1GB 使っていて、1日の間に Delete だけ行ったとき、課金対象となるデータ使用量は?
- その日は既に 1GB 使っていた、ということなので、削除前の 1GB が課金対象になる。
どこがシンプルなんだろうね?まったくややこしい。