Советы по кластеризации серверов SQL Server - Балансировка нагрузки

ОГЛАВЛЕНИЕ


Балансировка нагрузки

Для начала опровергнем одно распространенное заблуждение. Кластеризация MSCS используется для повышения уровня доступности, а не для балансировки нагрузки. Кроме того, сервер SQL Server не имеет встроенной возможности автоматической балансировки нагрузки. Балансировать нагрузку необходимо посредством физического проектирования приложения. Что это значит?

С ростом размеров таблицы следует ожидать ухудшения быстродействия, в частности, при сканировании таблицы. Когда количество строк достигает миллионов и миллиардов, обычным решением до сих пор являлось использование секционированных представлений. Эти секционированные представления состоят из таблиц с одинаковыми схемами, объединенных с помощью инструкций UNION ALL. Кроме того, для различения таблиц-компонентов устанавливаются проверочные ограничения (инструкция CHECK), что предотвращает дупликацию данных в секционированном представлении. Если столбец, используемый в проверочном ограничении, является частью первичного ключа, то представление является обновляемым.

Если таблицы-компоненты расположены на отдельных файловых группах, то для повышения быстродействия дисковой подсистемы можно распределить файлы этих файловых групп по разным физическим дискам. Можно даже размещать таблицы в разных базах данных. Однако размещение всех данных в одной базе данных позволяет использовать возможности секционирования таблиц, предоставляемые сервером SQL Server 2005. Реализовать такое секционирование значительно проще.

Но допустим, что уже испробованы все возможности секционирования таблиц или создания (локальных) секционированных представлений, а быстродействие все равно не на высоте. Если вы пользуетесь сервером SQL Server 2000 или SQL Server 2005, можно воспользоваться распределенными секционированными представлениями. Основное их отличие заключается в том, что таблицы-компоненты могут располагаться на разных экземплярах сервера SQL Server, и эти экземпляры могут быть установлены на кластере с конфигурацией «N+1». В чем же смысл такого решения? Если таблица-компонент в секционированном представлении становится недоступной, недоступным становится и всё представление. Если же сделать эти таблицы-компоненты частью кластера, это предоставит стабильность, необходимую для обеспечения быстродействия и балансировки нагрузки.