Azure表存储性能 - REST与StorageClient

Eri*_*k T 7 .net performance azure azure-table-storage

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

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

谢谢,埃里克

dun*_*nry 10

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

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

我认为还有更多依赖于你的应用程序.但是,我提到的那些通常是我开始的.