У меня есть 5 баз данных, каждая по 300 ГБ, в настоящее время в массиве RAID 5, состоящем из 5 дисков. Все базы данных интенсивно используются одновременно, поэтому скорость диска является проблемой.
Увидел бы я лучшую производительность, если бы избавился от конфигурации RAID 5 и просто поместил каждую базу данных на отдельный диск? Избыточность, обеспечиваемая RAID 5, не требуется из-за зеркалирования в другом месте.
Сможет ли сервер после этого выполнять чтение / запись на разные диски баз данных параллельно? По крайней мере, в большей степени, чем в RAID?
Это все в Windows 2003 / SQL 2008.
Размещение баз данных на разных шпинделях, скорее всего, будет работать намного быстрее, если они будут использоваться одновременно. Если у них возникают периоды занятости, которые смещены друг от друга, хотя один массив RAID будет работать быстрее, поскольку чтение одной базы данных будет распределено по нескольким дискам (чего, конечно, никогда не будет, если он находится на одном диске).
RAID5 часто является узким местом для производительности баз данных из-за высокой производительности записи. Если ваш массив представляет собой прямой массив с 5 дисками, то каждый блок, записанный на диск, скорее всего, приведет к трем операциям чтения с последующим вычислением четности, за которым следуют две записи (обновленный блок и обновленный блок четности) и каждая страница, которая обновляется в вашем DB приведет как минимум к двум блокировкам записи: одна в журнал транзакций и одна в файл данных. Все будет немного лучше, если вы используете 4 диска с горячим резервом, но не намного. Вот почему RAID1 + 0 обычно используется вместо RAID5 для работы с базами данных (или иногда RAID1E или аналогичные, которые, если они доступны, работают так же лучше).
Тот факт, что все записывается в журнал транзакций, а также в файл данных, является важным фактом. Вы можете значительно ускорить операции вставки / обновления, имея файл (ы) журнала и файл (ы) данных на разных дисках (и так на другом наборе головок). Вероятно, вам будет лучше расположить базы данных вокруг пяти дисков, чтобы каждый имел свой журнал и данные на разных дисках. То, как вы это сделаете, будет зависеть от ожидаемой активности каждой базы данных - вы хотите, чтобы две базы данных, которые были заняты одновременно, находились на одних и тех же дисках, если это возможно.
Другой вариант - иметь два отдельных массива RAID1 - один для всех файлов журнала и один для файлов данных. Я подозреваю, что вы увидите заметно лучшую производительность от этого загара, если каждая БД (оба данных + журнал) находится на отдельном диске. Или если ты действительно не заботитесь о избыточности (например, если ваши зеркала обслуживаются с использованием механизма репликации / кластера, что означает, что вы потеряете очень мало транзакций, если главные БД умрут), вместо этого вы можете иметь пару RAID0 для немного дополнительной скорости.
Если небольшая сумма денег на три диска не является проблемой, и на вашем компьютере есть место для большего количества дисков, у вас может быть пара массивов RAID10 (один для данных, один для журналов, всего 8 дисков), тогда у вас есть избыточность без RAID5. проблема с производительностью записи, у вас есть повышение производительности записи из-за того, что журналы и данные находятся на отдельных дисках, и потенциальное увеличение чтения + записи, которое часто наблюдается с RAID10 (4-дисковый RAID10 с хорошим контроллером имеет тенденцию работать аналогично 2-дискному RAID0) . Некоторые из наших производственных баз данных построены таким образом, и я могу вам сказать, что они летать по сравнению с другими механизмами, которые я тестировал. Если у вас есть аппаратный контроллер, поддерживающий RAID1E (к сожалению, он имеет разные имена на разных контроллерах), то вы можете сделать то же самое с двумя трехдисковыми массивами RAID1E, для чего потребуется всего 6 дисков.
У RAID 5 действительно низкая производительность записи. Вероятно, вам лучше использовать RAID 10 для интенсивно используемых баз данных.