Simply put, Azure table storage is too slow. The best I could get out of it was about 700 records/second for INSERT and 4600 records second for READ, which was unacceptable for the data sizes I had to deal with – several tables of around 100,000 records each.
Admittedly, I did not use batch operations, but it does not seem to matter: 700 records/second appears to be the true speed of the storage and it can’t be improved: see this StackOverflow article.
SQL Server, on the other hand, gave me and 1800-5000 records/second on INSERT (depending on the record size), and 30,000 records on READ, so I ditched the Table storage and went with the SQL server instead.
The data is summarized in the table below. Each value is records per second, higher values are better.
|Table Storage||SQL Server|
|Read from Azure VM||4601||30332|
|Write from Azure VM||690||1867|
|Read from outside Azure||3858||34456|
|Write from Azure VM||213||1020|
Of course, the speed is highly variable depending on server load, network conditions and the like, but the upper limit of 700 records/second for table storage INSERT appears to be quite stable.