2012-10-08 3 views
4

Я делаю программу, которая хранит и читает из таблиц Azure некоторые, которые хранятся в файлах CSV. У меня есть файлы CSV, которые могут иметь различное количество столбцов и между строками 3k и 50k. Мне нужно загрузить эти данные в таблицу Azure. До сих пор мне удалось загрузить и загрузить данные. Я использую REST API, и для загрузки я создаю пакетный запрос XML со 100 строками на запрос. Теперь это работает нормально, за исключением того, что требуется слишком много времени для загрузки, например. для строк 3k требуется около 30 секунд. Есть ли способ ускорить это? Я заметил, что это занимает больше времени, когда выполняется ответ (для команды ReadToEnd()). Я где-то читал, что установка прокси на нуль может помочь, но в моем случае это мало что делает.Время доступа к хранилищу Azure Table - вставка/чтение из

Я также нашел, что можно загрузить весь 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(); 
      } 
     } 

Что касается получения данных из лазурных таблиц, мне удалось получить 1000 объектов за запрос. Что касается этого, мне требуется около 9 секунд для CS с 3k строк. Это также занимает больше времени при чтении из потока. Когда я звоню эту часть кода (опять ReadToEnd()):

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

Любые советы?

+0

Тестируете облако или облако. среда для облаков? – Igorek

+0

Те, где для локального облака, когда я переместил приложение в облако, работал намного быстрее – jasheem

ответ

0

Как вы упомянули, вы используете REST API, вам, возможно, придется писать дополнительный код и зависеть от ваших собственных методов, чтобы повысить производительность, а затем использовать клиентскую библиотеку. В вашем случае использование библиотеки клиентов хранилища будет лучше, поскольку вы можете использовать уже созданные функции для ускорения вставки, upsert и т. Д., Как описано here.

Однако, если вы используете библиотеку Storage Client и ADO.NET вы можете использовать статью, ниже которой написана таблица команды Windows Azure, как поддерживаемый способ повышения производительности Azure Access:

.NET and ADO.NET Data Service Performance Tips for Windows Azure Tables

+0

Я нашел эти советы для повышения производительности, теперь я пытаюсь улучшить его с помощью потоков. – jasheem