Как масштабировать SQL Server 2008 или 2012?


8

Как масштабировать SQL Server 2008 (или 2012)? По сути, я понимаю, что есть два варианта:

Увеличить масштаб:

Если процессор привязан, я ясно вижу переход от 1 ядра к 2 к 4. Или, если использование оперативной памяти резко возрастает, просто добавляется больше оперативной памяти. SQL Server 2008/2012 на самом деле восполняет слабость и масштабируется таким образом, предполагая, что НЕТ изменений уровня приложения? Чтобы свести к минимуму спекуляции, давайте предположим, что я не делаю глупостей, таких как циклы процессора, перекрестные соединения и т. Д.

Масштабирование:

Не очень понятно, как будет работать масштабирование. Я имею в виду, если я добавлю другой сервер SQL рядом с моим первым, как запрос узнает, на каком сервере работать? Есть ли какой-то балансировщик нагрузки спереди (и поставляется ли он с программным обеспечением SQL Server?)? Это влечет за собой изменения уровня приложения для масштабирования для работы? Или я должен разделить данные и иметь собственный код, который вызывает правильный сервер базы данных в зависимости от ключа разделения данных?

Был бы признателен за более опытные люди.

Ответы:


10

SQL Server не масштабируется как таковой . Это масштабируется.

Есть 3 области для этого, с учетом ограничений на издание

  • Процессорные ядра
  • баран
  • Место хранения

И, конечно же, используйте более высокий выпуск, например, Enterprise

SQL Server не разделяет и любое такое решение (вы можете исследовать решения для разбиения MySQL) добавляет сложности и накладных расходов системе.

Масштабирование одного сервера (+ резервные узлы / зеркало) обычно довольно просто с использованием оперативной памяти, твердотельных накопителей, большего количества дисковых томов для распределения ввода-вывода, отдельных дисков для базы данных tempdb, журналов и т. Д.

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


Большой! Любая конкретная литература / учебные пособия / ссылки по MySQL, которые вы рекомендуете? Надеюсь, я смогу применить некоторые из этих шаблонов к SQL Server. Я учусь (быстро!), А вы довольно ресурс!
DeepSpace101

1
А современные серверы wintel могут масштабироваться до довольно высокопроизводительного оборудования. Если вам нужно выйти за рамки этого, вам комфортно на территорию VLDB и дорогой, специализированный комплект.
ConcernedOfTunbridgeWells

@Sid, Перемещение SQL Server в конфигурацию, в которой одна база данных используется несколькими физическими серверами, не является чем-то новым для пользователя. Есть только несколько человек, которые смогли успешно сделать это, поскольку это очень сложно и требует ОЧЕНЬ стабильной схемы и глубокого понимания шаблонов данных в базе данных (я преподавал классы по этому вопросу). Основные идеи с других платформ - хорошее место для начала, но используемые методы совершенно иные.
Мрденни

5

Как говорит gbn, SQL на самом деле не масштабируется, как это делают другие RDBM. Тем не менее, есть один аспект масштабирования, который многие упускают из виду, и который всегда должен иметь отдельную систему для отчетности.

Никогда не позволяйте отчетам работать против производства. Создайте себе базу данных отчетов на другом сервере.

В идеале ваша система отчетов должна содержать только те данные, которые необходимы отчетам, и структурироваться и оптимизироваться иначе, чем ваша производственная система.

Данные будут поступать в систему отчетности по мере необходимости (т. Е. Ежечасное обновление данных о производстве, ежедневной подаче и т. Д.).

Быстрый и грязный (и крайне неэффективный) подход заключается в том, чтобы просто иметь полную копию рабочей базы данных на другом сервере. Эту копию можно поддерживать с помощью полных резервных копий, доставки журналов транзакций, зеркалирования (со снимком), репликации и т. Д.

Однако я не рекомендую этот подход. Полное резервное копирование и восстановление занимает много времени, особенно в больших базах данных. Репликация сложна и проблемна. Доставка журналов оставляет вам базу данных только для чтения. Зеркальное отображение со снимками может быть хорошим ответом, но вы все еще застряли в производственной схеме, которая не оптимизирована для целей отчетности.

Отдельная система отчетности - это путь.


2

Если процессор привязан, я ясно вижу переход от 1 ядра к 2 к 4. Или, если использование оперативной памяти резко возрастает, просто добавляется больше оперативной памяти. SQL Server 2008/2012 на самом деле восполняет слабость и масштабируется таким образом, предполагая, что НЕТ изменений уровня приложения?

В различных изданиях SQL Server имеют различные ограничения с точки зрения процессора и памяти , которые они собираются использовать. Но, кроме этого, ответ да - если свободные циклы ЦП или страницы памяти доступны, сервер обычно будет использовать их при необходимости, если не настроено иначе.

Или я должен сегментировать данные и иметь собственный код, который вызывает правильный сервер базы данных

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.