Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Azure表存储分区单独性能_Performance_Azure_Azure Storage_Azure Table Storage - Fatal编程技术网

Performance Azure表存储分区单独性能

Performance Azure表存储分区单独性能,performance,azure,azure-storage,azure-table-storage,Performance,Azure,Azure Storage,Azure Table Storage,其中,Azure表存储分区的最低速度为每秒500次操作 如果我的数据被正确分区,这些分区上的并行操作会不会相互影响? 例如,如果我必须在分区A上进行昂贵的全表扫描(最大值为500个实体/秒),分区B上发生的任何操作的性能都会受到影响吗 存储帐户限制为每秒5000次操作。这是否意味着我可以在开始影响其他分区的性能之前,最多使用10个分区?您的观察是正确的,每个分区的性能是独立的。但是表存储的性能也(主要?)受到VM带宽的影响。如果您查看,有一列是关于“I/O性能”的,超小型和小型计算机具有“低”和

其中,Azure表存储分区的最低速度为每秒500次操作

如果我的数据被正确分区,这些分区上的并行操作会不会相互影响?

例如,如果我必须在分区A上进行昂贵的全表扫描(最大值为500个实体/秒),分区B上发生的任何操作的性能都会受到影响吗


存储帐户限制为每秒5000次操作。这是否意味着我可以在开始影响其他分区的性能之前,最多使用10个分区?

您的观察是正确的,每个分区的性能是独立的。但是表存储的性能也(主要?)受到VM带宽的影响。如果您查看,有一列是关于“I/O性能”的,超小型和小型计算机具有“低”和“中等”I/O。因此,如果一台计算机只能以10MB/s的速度获取数据,那么表存储的性能在很大程度上是无关紧要的—还要记住,虚拟化存储(作为操作系统的一部分)也会占用此带宽

存储帐户限制为5000/秒意味着当您开始达到该级别时,某些操作可能会超时。请确保您为任意数量的存储帐户设计了架构,就像预先正确完成一样,这样就可以很容易地绕过该性能上限


如果您认为您可能正在加载表存储。确保使用足够的诊断代码来查找问题所在,并执行一些瞬时故障处理以允许重试。

一般来说,您希望尽可能避免表扫描。它们是非常昂贵的操作(特别是如果您有很多分区)。从表压力的角度来看,情况并非如此,但它们具有非常高的聚合延迟(解释如下)。也就是说,有时根本无法避免

我们更新了存储体系结构,并提出了一系列目标限制

每个存储帐户现在的IOPS为20k/sec。 每个分区现在是2k/秒

分区的交互方式有点微妙,取决于它们的使用方式(以及随时间的变化)

Azure存储有两个阶段—一组服务器处理范围,另一组设置实际存储(即3个副本)。当一个表处于冷态时,所有分区都可以由一台服务器提供服务。由于分区承受持续的压力,系统将开始自动将工作负载(即碎片)分配到其他服务器。碎片是在分区边界上生成的

对于低/中等压力,您可能不会达到切分的临界值,或者仅达到最小次数。此外,访问模式也会产生一些影响(如果您只是附加,切分将没有帮助)。所有模式的随机访问将是目前为止规模最大的。当系统重新平衡时,您将得到503响应几秒钟,然后操作将恢复正常

如果您进行表格扫描,实际上您将多次往返于该表格。当查询到达分区的末尾时,将返回响应,并返回找到的任何数据(如果不满足条件,则返回无数据)和一个延续令牌。然后一次又一次地重新提交查询(并返回w/token),直到到达表的底部。这是SDK抽象的,但是如果您直接调用REST,就会看到它

从表性能的角度来看,扫描只会影响它当前正在扫描的分区

为了加速访问多个分区的广泛查询,实际上可以将其分解为多个并行访问(例如,每个分区一个线程),然后在客户端合并。实际上,这取决于你得到了多少数据,表有多大,等等