4

我正在制作一个程序来存储和读取一些存储在 CSV 文件中的 Azure 表。我得到的是 CSV 文件,它可以有不同数量的列,并且在 3k 到 50k 行之间。我需要做的是在 Azure 表中上传该数据。到目前为止,我设法上传数据并检索它。我正在使用 REST API,为了上传,我正在创建 XML 批处理请求,每个请求有 100 行。现在效果很好,只是上传时间太长了,例如。对于 3k 行,大约需要 30 秒。有什么办法可以加快速度吗?我注意到处理响应(对于ReadToEnd()命令)需要大部分时间。我在某处读到将代理设置为 null 可能会有所帮助,但在我的情况下并没有多大作用。

我还在某处发现可以将整个 XML 请求上传到 blob,然后从那里执行它,但我找不到任何这样做的示例。

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(content, 0, content.Length);
        }

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
        { 
            Stream dataStream = response.GetResponseStream();
            using (var reader = new StreamReader(dataStream))
            {
                String responseFromServer = reader.ReadToEnd();
            }
        }

至于从 azure 表中检索数据,我设法为每个请求获取 1000 个实体。至于那个,3k 行的 CS 大约需要 9 秒。从流中读取也需要大部分时间。当我调用这部分代码时(再次ReadToEnd()):

        response = request.GetResponse() as HttpWebResponse;
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {
             string result = reader.ReadToEnd();
        }

有小费吗?

4

1 回答 1

0

正如您所提到的,您使用的是 REST API,您可能必须编写额外的代码并依赖您自己的方法来实现与使用客户端库不同的性能改进。在您的情况下,最好使用存储客户端库,因为您可以使用已经构建的功能来加速插入、更新插入等,如此所述。

但是,如果您使用的是存储客户端库和 ADO.NET,则可以使用下面由 Windows Azure Table 团队编写的文章作为提高 Azure 访问性能的受支持方式:

Windows Azure 表的 .NET 和 ADO.NET 数据服务性能提示

于 2012-10-09T00:12:14.757 回答