Проблема производительности SQL IA64
У нас проблемы с производительностью.
Среды QA и DEV представляют собой 2 экземпляра на одном физическом сервере: Windows 2003 Enterprise SP2, 32 ГБ ОЗУ, 1 четырехъядерный 3,5 ГГц Intel Xeon X5270 (4 ядра x64), SQL 2005 SP3 (9.0.4262), диски SAN
Продукт: Windows 2003 Datacenter SP2, 64 ГБ ОЗУ, 4-ядерный процессор семейства Intel 80000002 с частотой 1,6 ГГц, модель 6 Itanium (8 ядер IA64), SQL 2005 с пакетом обновления 3 (9.0.4262), диски SAN, кластер Veritas
Я наблюдаю чрезмерное процентное отношение ожидания сигнала (> 250%), а также чтение / с (>50) и запись / с (>25) как высокие.
Я проверил этот запрос как на QA, так и на PROD, и у него один и тот же план выполнения и даже одна и та же статистика:
SELECT
top 40000000 *
INTO
dbo.tmp_tbl
FROM
dbo.tbl
GO
Сканирование 1, логическое чтение 429564, физическое чтение 0, чтение с опережением 0, логическое чтение с 0, физическое чтение с 0, чтение с опережением 0.
Как вы можете видеть, это просто логические чтения: QA: 0:48 Prod: 2:18
Так что это похоже на проблему с процессором, однако я не уверен, куда идти дальше, есть идеи?
Спасибо,
Аарон
4 ответа
Это было вызвано двумя проблемами - индексами, различными для prod и QA, а также неправильно настроенным maxdop.
У меня есть пара предложений для вещей, которые вы можете исследовать в сети SAN:
Видите ли вы значительную страницу защелки ввода / вывода в производственной сети SAN?
Журналы БД заняты общим томом?
В первом случае может быть конфигурация SAN или другие проблемы с производительностью, относящиеся к контроллерам SAN. Я видел это на оборудовании IBM shark; переход на DS8000 существенно смягчил проблему.
В последнем случае у вас могут возникнуть проблемы со случайным поиском, что может нарушить процесс записи журнала. Запись в журнал - это в основном последовательный процесс с большим количеством небольших последовательных записей. На тихих дисках это быстро, так как шаблоны доступа к диску в основном последовательные. На занятых дисках другой дисковый трафик превращает последовательные записи журнала в случайные записи, которые намного медленнее. Это может превратить диски журналов в существенное узкое место производительности.
Обратите внимание, что SQL Server требует, чтобы записи журнала были записаны на диск до того, как транзакция будет зафиксирована, и большинство поставщиков SAN зарегистрировались в программе сертификации, где они гарантируют, что контроллеры будут соблюдать этот стандарт. Это означает, что никакое количество кэш-памяти не уменьшит эту проблему, если ваши журналы находятся на занятом общем томе.
Что-нибудь еще происходило на сервере Prod? Похоже, что на сервере QA должен был выполняться только этот запрос, в то время как система Prod должна была обрабатывать данные для ЦП, в то время как другие запросы выполнялись одновременно. Как сравнить elapsed_time и worker_time в QA и Prod?
Также убедитесь, что планы точно такие же, включая DOP.
"Так что это похоже на проблему с процессором, однако я не уверен, куда идти дальше, есть идеи?"
Мне кажется вполне разумным, что процессор Core 2 с архитектурой 3,5 ГГц, возможно, на 100% быстрее, чем Itanium 1,6 ГГц (не семейство Intel 80000002, оригинальное семейство Itanium 2, Fanwood или Madison?). Если вам нужна большая скорость, обратите внимание на обновление процессора, возможно, до Xeon серии x5600.