【问题标题】:Why new Azure Storage Client Library 2.0 has poor query performance compare to legacy TableServiceQuery?与旧版 TableServiceQuery 相比,为什么新的 Azure 存储客户端库 2.0 的查询性能较差?
【发布时间】:2013-07-21 01:08:22
【问题描述】:

我只是做概念验证来衡量新 Azure 存储客户端库 2.0 及其旧版 TableServiceQuery 的性能改进。

运行结果后,我很惊讶!而不是 Azure SCL 2.0 将获得性能提升。与 TableServiceQuery 相比,它的性能差了一倍。

这是我的代码:

var account = CloudStorageAccount.Parse(ConfigHelper.DataConnectionString);
var tableClient = account.CreateCloudTableClient();
var context = tableClient.GetTableServiceContext();
var table = tableClient.GetTableReference("User");

var sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 100; i++)
{
    var query = context.CreateQuery<User>("User");
    var temp = (from item in query
                where item.PartitionKey == "12345"
                select item).First();
    temp.ToString();
}
sw.Stop();
Console.WriteLine("TableServiceQuery: " + sw.Elapsed);

sw.Reset();
sw.Start();
for (int i = 0; i < 100; i++)
{
    var query = new TableQuery<User>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "12345")).Take(1);
    var temp = table.ExecuteQuerySegmented(query, null).First();
    temp.ToString();
}
sw.Stop();
Console.WriteLine("TableQuery: " + sw.Elapsed);

结果是

TableServiceQuery: 00:00:13.8179295
TableQuery: 00:00:34.8782858

我尝试了几次,但新的 SCL 2.0 (TableQuery) 总是花费两倍以上的时间。我查询的“用户”表有大约百万条记录。

我的理解是新的 API 应该有很大的性能改进。有人请解释一下我的代码中是否遗漏了什么?或者我应该怎么做才能使新库具有更好的性能?

【问题讨论】:

    标签: performance azure azure-storage azure-table-storage


    【解决方案1】:

    此问题已在 SDK 2.0.6.1 中解决

    【讨论】:

      【解决方案2】:

      如果您在 Windows Azure 角色上运行此测试,请确保在部署时禁用 Intellitrace。有关云服务 Intellitrace 的更多信息,请参阅Debugging a Published Cloud Service with IntelliTrace and Visual Studio 文章。

      【讨论】:

      • 我没有启用智能跟踪。
      猜你喜欢
      • 2013-08-26
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 2011-09-26
      • 1970-01-01
      相关资源
      最近更新 更多