yasutomogのブログ

Software Engineerの雑記

PHP(Lumen)からAzure Storage Tableを使ったときのメモ3

内容

yasutomo.hatenablog.com

yasutomo.hatenablog.com

  • 上記2つの記事から、Azure SQLDatabaseとAzure Storage Tableを使って比較してみたメモ

処理概要

  • CSVから読み込んだデータをDBもしくはStorageに登録または更新
  • Azure SQLDatabaseのプランはS0(Standardの一番低いプラン)
  • Azure Storage Tableも通常プラン(上位版にはCosmosがある)
  • 自分のローカルPCから実施(AppService上で試すなどすると、また計測値が変わる可能性がある)

テスト内容

大量のInsert処理はAzure Storage Tableが早い

  • 10,000〜100,000件のCSVデータを使用してテスト
  • Azure SQLDatabaseへのInsert処理は1,000件単位にInsertして10,000件単位でcommitする(1000件単位でのInsertはSQLDatabaseの使用制限のため)
  • Azure Storage TableへのInsert処理は、Batchを使い100件単位にリクエス
  • 計測結果としては、CSV件数に関係なくAzure Storage Tableへの処理のほうが、Azure SQLDatabaseへの処理に比べて約5倍程の処理速度が出ることを確認

大量のupdate処理はAzure SQLDatabaseが早い

  • 1テーブル内の特定条件に紐づく複数レコードまたはエンティティを一括更新
  • 10,000件を一括更新するようなテスト
  • Azure SQLDatabaseへの更新処理は、update文を1文流すのみ
  • Azure Storage Tableへの更新処理は、更新対象データの判定に必要なデータを取得後、判定してから100件単位にBatchを使ってupdate処理をリクエス
  • 計測結果としては、Azure SQLDatabaseへの処理の方が約6倍近い速度がでることを確認。但し、どちらも数十秒で終わる処理なので、もっと大量なデータにならない限りはInsert処理に比べてほどのインパクトはなさそう。

結論

  • 大量のInsert処理が確実に必要になるのであれば、Azure Storage Tableは検討してみてもよさそう。
  • 今回の計測値は、Azure SQLDatabaseのプランはそこまで高くないので、そこを上げることで結果は変わってくる
  • 使用料金の観点でもみても、Azure Storage Tableのが安いので、その辺も踏まえて選定していく必要がある