Azure VHD性能与BLOB相比

时间:2017-03-29 17:16:53

标签: azure blob vhd

我在同一个blob服务中有2个容器。一个包含一个VHD,另一个包含单个测试PDF。

在连接了VHD的VM中运行进程,我得到以下数字。

VHD阅读:

// VHD = e: drive, copy files
using (FileStream fs = new FileStream(@"e:\various\14681.pdf", FileMode.Open))
using (var mstream = new MemoryStream())
{
    byte[] buffer = new byte[32 * 1024];
    int bytesRead;
    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
    {
        mstream.Write(buffer, 0, bytesRead);
    }
}
// 20MB file = 250ms, 250k file = <1ms

blockBlob.DownloadToStream:

//read blob 
//CloudBlockBlob blockBlob = container.GetBlockBlobReference("14681.pdf");

using (var mstream = new MemoryStream())
{
    blockBlob.DownloadToStream(mstream);
}

// 20MB file = 700-800ms, 250k file = 40ms

为什么这两个过程的性能存在这样的差异

1 个答案:

答案 0 :(得分:0)

好吧,当您访问存储blob时,您将通过公共互联网(甚至不是内部),这样会增加延迟,当您访问VHD时,您将通过Azure Backbone(虚拟机管理程序为您执行此操作)。<登记/> 我推测这是主要原因。