Превосходная производительность SQL Azure

В настоящее время я перемещаю базу данных клиентов в SQL Azure, и мы видим некоторые проблемы с производительностью. У нас есть экземпляр премиум-класса p2, но мы наблюдаем время выполнения базы данных SQL azure примерно в 3 раза медленнее текущей базы данных (sql server 2008 с аналогичным количеством ядер и ram). Индексы совпадают, операторы одинаковы, а также данные.

В рамках общих баз данных Azure SQL я понимаю, что производительность будет плохой, однако, поскольку у нас есть экземпляр p2, я бы ожидал, что производительность будет намного ближе к нашей существующей базе данных SQL Server 2008. Может ли кто-нибудь дать представление о том, почему p2 может работать медленнее, чем SQL Server 2008 из очень похожей спецификации? Я понимаю, что нужно учитывать латентность, однако оба сервера удалены от моего местоположения, поэтому это должно немного балансировать или учитывать только небольшую разницу, а не 200 миллисекунд в 600 миллисекунд за один простой запрос.

Учитывая отсутствие инструментов настройки производительности на данный момент для баз данных SQL Azure, можно ли предоставить какие-либо полезные предложения по настройке производительности базы данных?

Заранее спасибо

P.s. Я также задал этот вопрос на форуме MS azure, так как не уверен, сколько внимания уделяется. http://social.msdn.microsoft.com/Forums/windowsazure/en-US/cf269a65-7222-4c67-a294-3fa2f67c9583/sql-azure-premium-p2-performance-issues?forum=ssdsgetstarted

Ответ 1

Как упоминалось в комментариях Azure SQL, общий или премиальный, значительно отличается от локального, учитывая аппаратную и сетевую инфраструктуру. Этот document сравнивает SQL Server с базами данных SQL (aka SQL Azure), и поскольку товарное оборудование используется на Azure, это может объяснить разницу, которую вы испытываете: в то время как процессор остается тем же самым, и в облаке выбор, который вы делали для дисков на своем месте, может отличаться от дисковой инфраструктуры баз данных Azure SQL.

Я игнорирую тип запроса, который вы оценили, но по моему опыту, и из-за моего сценария дисковые IOPS имеют тенденцию быть столь же важными (или даже больше), чем количество ядер ЦП и ОЗУ, см. пределы.

Короче говоря, нет надежды на эквивалентную производительность между SQL Server и SQL Database, учитывая только CPU и RAM, даже если эти ресурсы зарезервированы с опцией Premium.

У нас есть множество баз данных Azure SQL в производстве, а некоторые из них Premium: у нас были большие преимущества в реализации телеметрии, чтобы автоматически собирать информацию и возможность использовать ее позже, когда это необходимо для анализа. Вот ссылка на сообщение блога CAT: http://blogs.msdn.com/b/windowsazure/archive/2013/06/28/telemetry-basics-and-troubleshooting.aspx

Это не относится конкретно к Premium или к Shared, но, если оно соответствует вашей области проекта, вы должны приложить усилия для внедрения телеметрии. В противном случае это хорошая отправная точка для поиска релевантных запросов к системным представлениям на Azure SQL.

Если вы хотите достичь в Azure SQL тех же самых характеристик, которые вы получаете, я предлагаю исследовать и в конечном итоге оптимизировать для разных сценариев.