Как масштабировать SQL Server 2008 (или 2012)? По сути, я понимаю, что есть два варианта:
Увеличить масштаб:
Если процессор привязан, я ясно вижу переход от 1 ядра к 2 к 4. Или, если использование оперативной памяти резко возрастает, просто добавляется больше оперативной памяти. SQL Server 2008/2012 на самом деле восполняет слабость и масштабируется таким образом, предполагая, что НЕТ изменений уровня приложения? Чтобы свести к минимуму спекуляции, давайте предположим, что я не делаю глупостей, таких как циклы процессора, перекрестные соединения и т. Д.
Масштабирование:
Не очень понятно, как будет работать масштабирование. Я имею в виду, если я добавлю другой сервер SQL рядом с моим первым, как запрос узнает, на каком сервере работать? Есть ли какой-то балансировщик нагрузки спереди (и поставляется ли он с программным обеспечением SQL Server?)? Это влечет за собой изменения уровня приложения для масштабирования для работы? Или я должен разделить данные и иметь собственный код, который вызывает правильный сервер базы данных в зависимости от ключа разделения данных?
Был бы признателен за более опытные люди.
источник
Как говорит gbn, SQL на самом деле не масштабируется, как это делают другие RDBM. Тем не менее, есть один аспект масштабирования, который многие упускают из виду, и который всегда должен иметь отдельную систему для отчетности.
Никогда не позволяйте отчетам работать против производства. Создайте себе базу данных отчетов на другом сервере.
В идеале ваша система отчетов должна содержать только те данные, которые необходимы отчетам, и структурироваться и оптимизироваться иначе, чем ваша производственная система.
Данные будут поступать в систему отчетности по мере необходимости (т. Е. Ежечасное обновление данных о производстве, ежедневной подаче и т. Д.).
Быстрый и грязный (и крайне неэффективный) подход заключается в том, чтобы просто иметь полную копию рабочей базы данных на другом сервере. Эту копию можно поддерживать с помощью полных резервных копий, доставки журналов транзакций, зеркалирования (со снимком), репликации и т. Д.
Однако я не рекомендую этот подход. Полное резервное копирование и восстановление занимает много времени, особенно в больших базах данных. Репликация сложна и проблемна. Доставка журналов оставляет вам базу данных только для чтения. Зеркальное отображение со снимками может быть хорошим ответом, но вы все еще застряли в производственной схеме, которая не оптимизирована для целей отчетности.
Отдельная система отчетности - это путь.
источник
В различных изданиях SQL Server имеют различные ограничения с точки зрения процессора и памяти , которые они собираются использовать. Но, кроме этого, ответ да - если свободные циклы ЦП или страницы памяти доступны, сервер обычно будет использовать их при необходимости, если не настроено иначе.
В основном да. «Масштабирование» часто выполняется, когда вам необходимо избежать конфликта блокировок. Если у вас есть длительные запросы с обширной блокировкой, вы можете отделить их от интерактивных запросов «в реальном времени» или циклов запросов-обновлений, запускаемых пользователями, использующими некоторый интерфейс и ожидающими быстрого ответа. Очевидно, что для решения этой проблемы потребуются изменения приложения (или, по крайней мере, изменения промежуточного программного обеспечения, если у вас трехуровневый дизайн).
источник