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

SQL Server: один массив RAID-10 с 12 дисками или 2 массива из 8 и 4 дисков

Настроить ящик для SQL Server 2008, который даст лучшую производительность (тяжелый OLTP)? Чем больше дисков в массиве RAID-10, тем выше производительность, но потеря 4 дисков, чтобы выделить их для журналов транзакций, даст нам большую производительность.

12 дисков в RAID-10 плюс один горячий резерв.

ИЛИ

8 дисков в RAID-10 для базы данных и 4 диска в RAID-10 для журналов транзакций плюс 2 «горячих» резерва (по одному для каждого массива).

У нас есть 14 слотов для работы с дисками, и это более старая версия PowerVault, которая не поддерживает глобальное горячее резервирование.

Я бы пошел 10/2. Журналы обычно небольшие и последовательные, и ваш RAID-контроллер должен иметь возможность ставить их в очередь достаточно эффективно, чтобы записывать их на 2 диска в рейде 1, не мешая остальным. Если ваш RAID-контроллер не может этого сделать, забудьте о разделении и просто выберите 12, если вы торопитесь. Если у вас есть время, запустите несколько тестов и посмотрите, что работает. Позор за отсутствие глобальных горячих запчастей, но в любом случае похоже, что у вас есть приличная коробка, с которой можно поиграть.

Вы должен сначала определите свою рабочую нагрузку. И тестируйте, тестируйте, тестируйте (не могу не подчеркнуть этого достаточно):

Во-первых, утверждение «чем больше дисков в моем RAID 10, тем он быстрее» - неверно. Это во многом зависит от того, как ваша система RAID реализует этот уровень RAID (распределение операций записи / чтения / чередования / буферов ... Я мог бы продолжить).

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

Вы говорите, что много занимаетесь OLTP. В моем понимании этого термина это означает много чтений, а не много записей (... не так ли? Сначала подтвердите это). В этом случае можно хранить журналы транзакций в одном и том же месте, поэтому я бы выбрал 12 диск.

Вы должны неплохо справиться с 12 дисками в RAID-10, но убедитесь, что на сервере есть приличный объем памяти. Причина в том, что если у вас достаточно памяти, большая часть записей данных будет кэшироваться, а многие записи будут консолидированы в одной транзакции ввода-вывода, когда дело доходит до записи данных на диск. Особенно это актуально для базы данных OLTP. Кэширование дает вам достаточную пропускную способность для записи журнала транзакций на тот же диск. Вы можете еще больше повысить производительность записи, используя аппаратный RAID-контроллер со встроенным кешем, защищенным BBU в режиме обратной записи.

Также обратите внимание, что использование 8 + 4 или 10 + 2 также является хорошим вариантом, единственный недостаток, который я вижу в этом, - неэффективное использование хранилища. В остальном он твердый.

Насколько я знаю, следует учитывать два основных фактора.

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

  2. Таким образом вы хотите хранить свою основную базу данных и журналы транзакций отдельно - если вы потеряете свои основные диски базы данных, вы можете восстановить БД из резервной копии + журналы транзакций, и если вы просто потеряете свои журналы транзакций, у вас все еще будет основная БД.

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