我正在创建一个程序,用于存储和读取Azure表中存储在CSV文件中的一些程序。我得到的是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个实体。至于那个,CS需要大约9s,行数为3k。从流中读取也需要大部分时间。当我调用这部分代码时(再次ReadToEnd()
):
response = request.GetResponse() as HttpWebResponse;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
}
任何提示?
答案 0 :(得分:0)
正如您所提到的,您正在使用REST API,您可能必须编写额外的代码并依赖于您自己的方法来实现性能改进,然后使用客户端库。在您的情况下使用存储客户端库是最好的,因为您可以使用已构建的功能来加速插入,upsert等所述here。
但是,如果您使用的是Storage Client Library和ADO.NET,则可以使用以下由Windows Azure Table团队编写的文章作为改进Azure Access性能的支持方式:
.NET and ADO.NET Data Service Performance Tips for Windows Azure Tables