Azureテーブルストレージのエンティティ取得時間を調べた

こんにちは。日山(@hiiyan0402)です。

Azureテーブルストレージから、同一パーティションキーのエンティティを一括取得する際に、どの程度時間がかかるのか?Webアプリケーションから取得する場合、何件程度なら許容範囲か?が気になったので調べてみました。


実験内容

  • Azureテーブルストレージからエンティティを一括取得する時間を計測した。
  • 一括取得はMicrosoftAzureストレージライブラリ(バージョン4.3.0)を用いる。
  • 取得元はAzure仮想マシン(Windows Server 2012 R2)から行う。
  • 取得元の仮想マシン及びストレージアカウントのリージョンはどちらも東日本(同一リージョン内)。
  • 一括取得するエンティティ数は、10, 100, 500, 1000, 2500, 5000, 7500, 10000, 25000, 75000, 100000個とした。
  • 各エンティティ数の一括取得時間を10回計測し、最高値/最低値を除いた8回の結果の平均値を、計測結果とした。
  • あらかじめテーブルに登録されているエンティティ数は100,000個、全て同じパーティションキー。

実行結果

取得エンティティ数 取得時間
10 202 ミリ秒
100 197 ミリ秒
500 197 ミリ秒
1000 195 ミリ秒
2500 600 ミリ秒
5000 1,022 ミリ秒
7500 1,624 ミリ秒
10000 2,059 ミリ秒
25000 5,107 ミリ秒
50000 10,332 ミリ秒
75000 15,324 ミリ秒
100000 20,517 ミリ秒

20140926_hiyama_01

結果生データ

計測結果まとめ

  • エンティティ数1,000個までは200ミリ秒弱で取得可能→ 1,000エンティティまでは 1回のREST APIで取得可能だからですね (参照)
  • エンティティ数1,000個から、線形的に取得時間が伸びる
  • 1,000個以上の一括取得は0.5ミリ秒/エンティティ数 で考えるとだいたいの取得時間が計算できる
  • 1,000ミリ秒超える5,000個からWebアプリケーションで呼び出し度に取得するのはキツくなってくる (→ やめたほうがよい)

ソースコード

計測に使用したソースコードはこちらで公開しています。

今回も最後までご覧いただきありがとうございました!


TechTarget

クラウドエンジニア  日山 雅之による記事「Microsoft Azure スマート解説」がTechTarget Japanにて好評連載中です (全7回)