是否有解决ATS(Azure表存储)500个实体/秒/分区的方法?确定与脏读。如果在插入不能立即读取然后确定。Azure表存储性能的一个非常具体的表
想要将一些大表从SQL移动到ATS。
规模:由于这些表的大小被碰撞SQL天青
插入速度的150 GB限制:反向索引查询速度。插入顺序不是 按表聚簇索引排序,这会导致快速SQL表 分段。 ATS最有可能比SQL有插入优势。
成本:ATS的月度成本较低。但是,ATS具有数百万行的更高负载成本,并且不能按照负载的顺序进行批处理。
查询速度:搜索几乎从不在一个partitionKey上。搜索将有一个SQL组件和零个或多个ATS组件。这个ATS查询总是通过partitionKey并返回rowKeys。对partitionKey的原始搜索很快,问题是返回实体(行)的时间。一个给定的partitionKey平均有1000个rowKeys,它是500个实体/秒/分区的2秒。但是会有一些分区键超过10万个rowKeys,相当于超过3分钟。一次返回10000行,SQL中不返回任何查询,因为连接的权力不需要减少100,000行以在where中考虑这些行。
是否有围绕此选择实体速度与ATS?对于刻度和插入速度想要去ATS。
Windows Azure Storage Abstractions and their Scalability Targets
How to get most out of Windows Azure Tables
Designing a Scalable Partitioning Strategy for Windows Azure Table Storage
打开实体跟踪断为没有将要被修改的查询的结果: context.MergeOption = MergeOption.NoTracking;
谢谢,直线X:1不符合数据,但我明白了。一些partitionKeys将有1个rowKey和大约100万个。需要一个基于rowKey计数生成新分区键的智能插入。回到500 /实体/秒限制。理解可以使用另一个表来管理计数而不是实际计数。 500仍然限制了迁移。如果那500人是5000人,那么我认为这种方法会让我受益。不会标记为答案(但),但我已经投了很多答案,并再次感谢。 – Paparazzi 2012-07-12 15:09:14
@Blam - 是的,你明白了,正如你所提到的,如果每个分区的行数变化很大,这可能不是非常有效/有效。 另一种方法可能是使用双存储 - Azure SQL和blob。 Azure SQL将成为主要的存储空间,blob是次要的。后台进程会根据使用情况/老化情况将行移出SQL数据库并移入每个分区的blob。在查询时,可以并行查询SQL和blob,并将结果合并。 – hocho 2012-07-14 22:42:31
SQL插入速度是我需要摆脱的。经过两小时的碎片碎片后,我希望每秒插入500次。我可能会走相反的方向并将其索引到ATS,然后合并到SQL中。 – Paparazzi 2012-07-15 01:55:07