Azure表存储性能 - REST与StorageClient

时间:2011-08-19 07:29:44

标签: .net performance azure azure-table-storage

我正在使用Azure Table Storage,并试图找出提高性能的最佳方法。我执行的查询非常简单 - 使用分区键和行键的精确选择,或带有列表的where子句(例如,WHERE x == 1或x == 2或x == 3等)。一旦我收回数据,我就不会在数据上下文中跟踪它(不需要更改跟踪等)。同样保存数据,因此我只将其添加到上下文中以启用保存。

目前,我正在使用.NET库(存储客户端)。由于我没有使用TableServiceContext的更改跟踪和其他功能,我正在考虑直接使用HTTP API。有没有人尝试过两种选择?如果是这样,你看到了什么样的性能差异?

谢谢, 埃里克

2 个答案:

答案 0 :(得分:10)

表存储可能是一种善变的野兽,可以优化性能。影响它的因素有很多种。这里只是我的头脑中的一些:

  1. 必须在每个查询中使用分区键。如果你不这样做,你做错了。如果你使用单个PK和单个RK(只有那两个),它不再是一个查询,而是一个资源GET,应该是相对即时的。
  2. 不要使用基于OR的查询。这将导致全表扫描,你的表现将是可怕的。而是在OR语句中并行化这些查询。
  3. 分区策略将产生重大影响。您拥有多少个分区以及多长时间点击它们(加热它们并使底层分区服务器负载均衡)将导致显着的差异。分区的大小也会对此产生重大影响。顺序分区键通常是个坏主意。
  4. 小的请求可以从关闭唠叨中受益(如前所述)。
  5. 关闭上下文跟踪,100继续(see here)也可以提供帮助。
  6. 我认为还有更多依赖于你的应用程序。但是,我提到的那些通常是我开始使用的那些。

答案 1 :(得分:2)