PHP(Lumen)からAzure Storage Tableを使ったときのメモ3
内容
- 上記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のが安いので、その辺も踏まえて選定していく必要がある