- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Azure 表存储作为时间序列数据库。数据库不断扩展更多行(每个分区每秒大约 20 行)。每天我都会为当天的数据创建新的分区,以便所有分区都有相似的大小,并且不会变得太大。
到目前为止,一切都运行得完美无缺,当我想从特定分区检索数据时,获取 1000 个值永远不会超过 2.5 秒,平均需要 1 秒。
当我尝试查询分区的所有数据时,尽管事情变得非常非常慢,但在过程中间,每个查询将花费 30-40 秒来获取 1000 个值。
所以我取消了该过程,只是为了在较小的范围内重新启动它。但现在所有查询都花费太长时间。从一开始所有查询都需要 15-30 秒。这是否意味着数据以非有效的方式重新排列,这就是我看到性能急剧下降的原因?如果是的话有没有办法处理这样的重新安排?
最佳答案
我绝对会建议您查看 Jason 上面指出的链接。您没有给出有关如何生成分区键的太多细节,但从声音来看,您陷入了几种反模式。包括通过应用 Append(或 Prepend)以及单个分区中的实体过多。我建议您减少分区大小,并在分区键中添加哈希或随机前缀,这样它们就不会按字典顺序排列。
Azure 存储在后台遵循范围分区方案,因此即使您选择的分区键是唯一的,如果它们是连续的,它们也会落入同一范围,并可能由单个分区服务器提供服务,这会妨碍Azure 存储服务整体负载平衡和扩展存储请求的能力。
您应该考虑的另一个方面是如何读回实体,最好的建议是使用分区键和行键的点查询,最糟糕的是没有 PK 和 RK 的全表扫描,中间有分区由于您的分区大小,扫描在您的情况下性能也会很差。
关于azure - 查询整个分区后,Azure 表存储性能急剧下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36306026/
我是一名优秀的程序员,十分优秀!