2012-07-01 2 views
3

При преобразовании некоторых данных в SQL Azure я заметил неожиданное поведение. Я сделал быструю проверку, и это результат:SQL Azure slow performance

У меня есть одна таблица в БД с 1M-записями, а размер БД - 230 МБ, без некластеризованного индекса.

Я сделал простой тест, создав новую таблицу с той же самой схемой и просто копируемся данными из одной таблицы в другую, как это:

INSERT INTO [dbo].[lete_new] 
      ([str_en] 
      ,[str_en_fp]) 
SELECT [str_en] ,[str_en_fp] FROM [dbo].[lete] 

Прежде всего, мне локальную рабочей станции (SELECT [str_en ], [str_en_fp] FROM [dbo]. [lete]) занимает 8 секунд, поэтому сверху это время, которое требуется для вставки. Когда я запустил вставку на своем локальном WS, понадобилось 10 секунд, чтобы скопировать данные в новую таблицу. Большой сюрприз заключался в том, что когда я запустил тот же запрос на Azure, это заняло 30 секунд.

Я знаю, что это не совсем вопрос программирования, но все равно это повлияет на производительность программы, и я хочу знать, почему это падение производительности?

ответ

5

В игре есть немало вещей. При таком типе операции тот, который больше всего влияет на вас, заключается в том, что система хранения на вашем локальном диске отличается от того, что работает над SQL Azure. Имейте в виду, что все записи реплицируются, так что сбои могут быть быстро обработаны. С этим много пишет, я подозреваю, что именно там наблюдается большая разница.

Также имейте в виду, что экземпляр SQL Azure используется совместно с другими пользователями, и он находится на товарном оборудовании. Производительность системы с 4 ядрами, предназначенными для одного пользователя (вашего рабочего стола), будет отличаться от любого сервера, который работает с другими пользователями (SQL Azure).

В общем случае вы не сможете приравнять производительность одного выделенного ресурса к ресурсу облачного провайдера. Выгоды обусловлены снижением стоимости и масштабированием, а не масштабированием.

+2

Правильно, после прочтения вашего ответа, я помню, что SQL Azure хранит не менее 3 экземпляров БД в любое время в разных зонах в центрах обработки данных. При выполнении обновления на одном БД, SQL Azure требует, чтобы по крайней мере 2 БД получили изменение до того, как оно разрешило совершить. –