1

我有一个在工作角色中运行的 WCF,其方法是在表中插入。

我有很多客户端将访问此方法以在表中插入数据,但我真的需要这方面的性能。

在我的插入方法中,我一一进行插入,所以我想在我的 WCF 收到 100 条记录后将其更改为进行批量插入。我该怎么做,我可以在其中存储一个带有此记录列表的变量,以便稍后进行批量插入?

4

1 回答 1

3

您确实需要考虑数据的持久性(或缺乏持久性)。如果您等待 100 次上传,您会将数据临时存储在哪里?唯一安全的地方是 blob、表或队列(或 SQL 数据库服务)。

如果您存储在 RAM 中,它是易失的,您可能会丢失数据(此外,您的数据将被拆分到多个服务器实例中,因此在刷新其中一个服务器实例之前,您实际上可能最终缓冲了远远超过 100 个数据项)。

如果您存储在队列中,您将达到与写入表相同的性能曲线。与斑点相同。

这可能是过早的优化。表存储为每个分区提供每秒 2,000 个事务(整个存储帐户每秒最多 20,000 个事务)。您可以拥有多个存储帐户。

假设您对数据进行了仔细的分区(使用不同的分区键,而不是将所有内容存储在一个分区中),您应该会看到每秒超过 2,000 个事务的存储吞吐量。

您还可以将高达 10Gbps 的入站数据移至您的存储帐户。考虑到我们新的 8 核 56GB 机器的最大NIC 带宽为 2Gbps,您需要其中 5 台同时运行才能接近该限制。使用单核虚拟机(每核 100Mbps),你需要,哦,100 个实例来饱和存储帐户的入口带宽潜力。

有关存储帐户带宽的所有详细信息都在本文中

于 2013-04-27T15:38:00.183 回答