gpt4 book ai didi

azure - 性能 - 表服务、SQL Azure - 插入。大数据量查询速度

转载 作者:行者123 更新时间:2023-12-04 01:09:45 25 4
gpt4 key购买 nike

我读过很多关于比较 SQL Azure 和表服务的帖子和文章,其中大多数都说表服务比 SQL Azure 更具可扩展性。

抱歉http,我是新用户>_<但是http://azurescope.cloudapp.net/BenchmarkTestCases/基准测试显示了不同的情况。

我的情况。使用 SQL Azure:一张表有很多插入,每天大约 172,000,000 次(每秒 2000 次)。当我在一个表中有 200 万条记录或 9999....90 亿条记录时,我可以期待良好的插入和选择性能吗?

使用表服务:一张表具有一定数量的分区。分区的数量可以很大,非常大。

问题 1:表服务对于在一个表中创建很多很多分区是否有一些限制或最佳实践?

问题#2:在单个分区中,我有大量小实体,如上面的 SQL Azure 示例。当一个分区中有 200 万条记录或 99990 亿个实体时,我能否获得良好的插入和选择性能?

我知道分片或分区解决方案,但它是一个云服务,云不是很强大,不需要我的代码技能就可以完成所有工作吗?

问题#3:有人可以向我展示 SQL Azure 和表服务查询大量数据的基准吗?

问题#4:也许您可以为我的案例提出更好的解决方案。

最佳答案

简答

  1. 我还没有看到大量分区导致 Azure 表 (AZT) 问题,但我没有这么大的数据量。
  2. 分区中的项目越多,该分区中的查询速度就越慢
  3. 抱歉,没有,我没有基准
  4. 见下文

长答案

就您的情况而言,我怀疑 SQL Azure 不适合您,仅仅是因为 SQL Azure 数据库大小的限制。如果您插入的每一行都有 1K 的索引,您将在大约 300 天内达到 50GB 的限制。确实,微软正在谈论大于 50GB 的数据库,但他们没有给出具体的时间表。 SQL Azure 也有一个我目前无法找到的吞吐量限制(但我很确定它低于您的需要)。您可以通过在多个 SQL Azure 数据库中对数据进行分区来解决这一问题。

SQL Azure 确实具有的优势是能够运行聚合查询。在 AZT 中,您甚至无法在不加载每个客户的情况下编写select count(*) from customer

AZT 还具有每个分区每秒 500 个事务的限制,以及 "several thousand" per second per account 的限制。 .

我发现选择分区键 (PK) 和行键 (RK) 取决于您要如何查询数据。如果您想单独访问这些项目中的每一项,只需为每一行提供它自己的分区键和一个常量行键即可。这意味着您有很多分区。

举例来说,如果您插入的这些行是订单,并且这些订单属于某个客户。如果您更常见的是按客户列出订单,则 PK = CustomerId,RK = OrderId。这意味着您只需通过分区键查询即可找到客户的订单。要获取特定订单,您需要知道 CustomerId 和 OrderId。客户的订单越多,找到任何特定订单的速度就越慢。

如果您只需要通过 OrderId 访问订单,那么您可以使用 PK = OrderId, RK = string.Empty 并将 CustomerId 放入另一个属性中。虽然您仍然可以编写一个查询来返回客户的所有订单,但如果您的查询不使用 PartitionKey(有时甚至取决于您的编写方式),AZT 不支持除 PartitionKey 和 RowKey 之外的索引它们)将导致表扫描。就您所说的记录数量而言,这将是非常糟糕的。

在我遇到的所有场景中,拥有大量分区似乎并不会让 AZT 太担心。

在 AZT 中对数据进行分区的另一种不常提及的方法是将数据放在不同的表中。例如,您可能希望每天创建一个表。如果您想运行上周的查询,请对 7 个不同的表运行相同的查询。如果您准备在客户端做一些工作,您甚至可以并行运行它们。

关于azure - 性能 - 表服务、SQL Azure - 插入。大数据量查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3872419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com