有没有办法使用 ATS(Azure 表存储)大约 500 个实体/秒/分区?脏读没问题。如果 in insert 不能立即用于读取,则 OK。
希望将一些大型表从 SQL 移动到 ATS。
规模:由于这些表的大小正在突破 SQL Azure 的 150 GB 限制
插入速度:查询速度的倒排索引。插入顺序未按表聚集索引排序,导致 SQL 表快速碎片。ATS 很可能比 SQL 具有插入优势。
成本:ATS 的月成本较低。但是 ATS 的加载成本较高,为数百万行,并且由于加载的顺序不是按分区进行的,因此无法批处理。
查询速度:几乎从不只在一个 partitionKey 上进行搜索。搜索将有一个 SQL 组件和零个或多个 ATS 组件。此 ATS 查询始终通过 partitionKey 并返回 rowKeys。partitionKey 的原始搜索速度很快,问题是返回实体(行)的时间。给定的 partitionKey 将平均有 1,000 个 rowKey,即 500 个实体/秒/分区时为 2 秒。但是会有一些 partitionKeys 超过 100,000 个 rowKeys,这相当于超过 3 分钟。在 SQL 中一次返回 10,000 行,并且没有查询超过 10 秒,因为连接的功能不必减少 100,000 行以在 where 中考虑这些行。
是否有围绕 ATS 的选择实体速度?对于规模和插入速度想去 ATS。
为不会修改的查询结果关闭实体跟踪: context.MergeOption = MergeOption.NoTracking;