Назад | Перейти на главную страницу

Как я могу ускорить запросы SQL Server на Amazon EC2?

Наши SQL-запросы иногда занимают слишком много времени. У нас есть установка Windows Server 2003 / SQL Server 2005. Мы уже создали индексы везде, где это возможно. Можно ли получить диски быстрее? Есть идеи от кого-нибудь?

Текущее мышление (по состоянию на июль 2011 г.) состоит в том, что лучшая производительность на EC2 - это RAID-массив эфемерных дисков (чем крупнее ваш экземпляр, тем их больше). Если вы решите это сделать, лучше убедитесь, что у вас есть резервные копии, поскольку любой сбой хоста означает, что ваши данные могут и исчезнут.

Как предлагает Том, вы можете использовать RAID EBS-тома: производительность не так хороша, как вам нужно выходить в сеть, но вы уменьшите свой поиск по мере увеличения количества шпинделей, которые могут искать параллельно. Вот несколько хороших тестов.

Есть и другие вещи, которые нужно учитывать, например размеры экземпляра, которые могут снизить конкуренцию, и размеры тома EBS, которые максимизируют вашу производительность. Обязательно «разогрейте» свои тома перед их использованием, так как есть штраф за первую запись для эфемерных дисков и штраф за первое чтение для EBS.

Наконец, вы не получите большего от специалиста по SQL-серверам, чем Брент Озар, так что прочтите и поймите его пост по теме. Это привело к разговор на форуме AWS в котором говорится об относительных показателях производительности, для которых вы можете оптимизировать.

Я рекомендую, как и при любой проблеме с производительностью, измерить и определить ваше узкое место. Используйте хорошо зарекомендовавшую себя методологию, например Ожидания и очереди. Только после того, как вы определите причину проблемы, вы можете предложить и протестировать решения. Кажется очевидным, но так мало кто делает ...

Нападение на ваши EBS или временные тома является решением тогда и только тогда, когда установлено, что проблема вызвана высоким объемом операций ввода-вывода, который нельзя решить никаким другим способом. Поскольку вы развертываете на EC2, ваше решение должно быть спроектировано так, чтобы соответствовать экземпляру EC2 без разлива пула буферов (без необходимости чтения с диска), и единственным вводом-выводом должен быть начальный прогрев, обновления сбрасываются в контрольной точке и, конечно, , промывка журнала. Если вы обнаружите, что вам нужно больше операций ввода-вывода, чем это, тогда ваш лучший подход - проанализировать структуру базы данных и код приложения и подогнать их под ваш целевой хост, вы получите намного больше от этого, чем от всего, что вы можете сделать. . какой делает который Среднее значение, опять же, полностью зависит от вашего приложения и результатов вашего расследования.

Возьмите целую группу томов EBS и объедините их в массив RAID10. Затем поместите свои данные в этот массив, и теоретически вы должны получить лучше производительность.

Работает на Linux. Понятия не имею, как это сделать в Windows, но это теория.