Optimizing blob uploads and downloads
Large blobs need to be uploaded to the Windows Azure Blob Service, either in blocks for block blobs or in pages for page blobs. Similarly, blobs can be downloaded in byte ranges. These operations can be implemented in parallel using different threads to upload or download different parts of the blob.
The Blob service has a scalability target for throughput of about 60 MB per second for an individual blob. This creates a limit to how much performance improvement can be achieved through parallelizing operations on a blob. When contemplating parallelization, it is always worth testing the actual workload to ensure that any expected performance gain is in fact realized.
.NET Framework 4 includes the Parallel Extensions to .NET that simplifies the task of parallelizing operations. These provide parallel versions of the traditional for
and foreach
statements. The Parallel.For
and Parallel.ForEach
methods can be dropped in almost as replacements for for
and foreach...