Оптимальная настройка RAID для SQL-сервера - PullRequest
15 голосов
/ 03 октября 2008

У нас есть база данных SQL 2005 для нашего сайта, в настоящее время около 10 ГБ. Чтений намного больше, чем записей, хотя точной статистики у меня нет.

Мы модернизируем наш сервер базы данных, и я думал о том, чтобы получить 4 диска и настроить их в два массива RAID 1 - один для файлов данных, а другой для ОС и файлов журналов. Будет ли это оптимальной настройкой или RAID 5 будет лучше для файлов данных? RAID 10 становится немного дорогим и, вероятно, излишним для нас.

На этом этапе SQL Server должен хранить большую часть базы данных в оперативной памяти (8 ГБ), но она будет расти, поэтому я не хочу полностью полагаться на это.

Редактировать: мы определенно хотим избыточности на рабочем сервере, поэтому RAID 0 сам по себе отсутствует. RAID 10 хорош, но может быть немного дороже для нас.

Ответы [ 10 ]

16 голосов
/ 03 октября 2008

Ваша концепция использования независимых зеркал RAID 1 - правильная стратегия.

Мы реализовали подобные сценарии в моей работе, и они работают очень хорошо.

RAID 1

RAID 1 обеспечивает скорость 1 диска для записи и 2 диска для чтения.

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

При чтении из массива RAID 1 контроллер будет считывать данные с обоих дисков, поскольку на них есть одинаковые данные.

RAID 5

Это полезно для защиты больших объемов данных. Стоимость RAID 5 увеличивается намного медленнее, чем RAID 1 (или RAID 0 + 1, если вы используете емкости, превышающие размер отдельных дисков) для того же объема данных.

Если вы хотите защитить 600 ГБ с помощью RAID 5, вы можете добиться этого с дисками 4x200 ГБ или 3x300 ГБ, что требует 800-900 ГБ от общего объема приобретенного дискового пространства. RAID 1 - это диски емкостью 2x600 ГБ, требующие 1200 ГБ приобретенного пространства (с дисками емкостью 600 ГБ, что намного дороже) или RAID 0 + 1, позволяющий использовать менее дорогие диски (например: 4x300 ГБ или 6x200 ГБ), но все же требующие в общей сложности 1200 ГБ памяти. купленная площадь.

RAID 0 + 1

Обладает теми же преимуществами, что и RAID 1, подняв его еще на одну ступеньку с чередованием дисков. Я предполагаю, что если вы обеспокоены более высоким одновременным чтением, вы также будете использовать многопроцессорные / многоядерные. Вы будете обрабатывать несколько запросов одновременно, поэтому чередование не поможет. Вы бы увидели лучшее преимущество в RAID 0 + 1 для отдельных приложений, использующих большие файлы данных, например, для редактирования видео.

Когда я некоторое время назад изучал эту проблему для клиента, я обнаружил, что эта статья очень интересна http://blogs.zdnet.com/Ou/?p=484. На второй странице он говорит о переходе с RAID 0 + 1 на создание независимых массивов RAID 1. много улучшений производительности. Это было в гораздо большем масштабе (20 дисков и 16 дисков SAN), но те же концепции. Отличным решением для SQL Server является балансировка нагрузки данных между несколькими томами вместо простого неинформированного чередования RAID 0 + 1.

3 голосов
/ 04 октября 2008

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

1 голос
/ 25 марта 2009

Две вещи,

Теория состоит в том, что RAID 1 дает вам два диска для чтения, но не думаю, что это в два раза больше производительности. На самом деле это не так, обычно скорость последовательного чтения заканчивается точно так же, как на одном диске. Удивительно, но это правда ... делайте тесты в реальном мире, не полагайтесь на теорию.

С учетом сказанного, я бы пошел с двумя RAID 1 ... но не так, как вы сказали, один для ОС, а другой для данных. Я хотел бы иметь небольшой раздел ОС на одном из них, но определенно передал бы оба рейда на сервер sql для данных. Дайте серверу sql все возможные наборы.

SQL Server может распределяться между парами, вы абсолютно не хотите идти с 0 + 1, несмотря на то, что кто-то здесь говорит. Они снова смотрят на теоретические тесты, не понимая, что сервер sql может распределять все свои данные по дискам, и могут делать это оптимизированным способом.

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

У вас есть 0 + 1 и разбейте его на два рейда 1. ... проводите тестирование в реальном мире, вы будете удивлены тем, что быстрее для работы сервера sql.

1 голос
/ 04 октября 2008

Учитывая небольшой размер базы данных, я бы использовал четыре 2,5-дюймовых диска SFF SAS 15krpm, настроив их как два отдельных зеркала RAID 1. Я бы провел их через что-то вроде адаптера Adaptec 5805 PCI-e x 8 SAS. Я поместил данные в один массив, а журналы - в другой для безопасности.Бар отображает память всей базы данных, очень большое / дорогое SAN или использует твердотельные накопители. Я уверен, что это будет самая быстрая настройка за деньги.

Надеюсь, это поможет.

1 голос
/ 03 октября 2008

Помните, что ключевым показателем производительности будет скорость поиска, а не скорость передачи данных. То есть типичная база данных, привязанная к диску (как ваша может стать по мере роста), будет ограничена количеством операций ввода-вывода в секунду, которые могут поддерживать диски, а не максимальной скоростью передачи данных, которую они могут поддерживать для последовательного чтения.

Это означает, что если вам интересно, как использовать 4 диска (например), две пары RAID1 должны дать вам лучшую производительность, чем один 4-дисковый массив RAID5. Конечно, вы не получите столько полезного хранилища из двух пар RAID1.

1 голос
/ 03 октября 2008

Учитывая, что операций чтения намного больше, чем операций записи, RAID 5 будет быстрее для ваших файлов данных.

Если возможно, используйте отдельный массив RAID 1 + 0 для файлов журнала транзакций.

РЕДАКТИРОВАТЬ: вам понадобится как минимум 3 диска для создания массива RAID 5.

0 голосов
/ 30 сентября 2011

Я предпочитаю raid 10, который я уже настроил на моем сервере dell r210-II linux. Потрясающая производительность ...

0 голосов
/ 25 марта 2009

Кстати, там, где я работаю, у них есть высококлассный сан, который выполняет сканирование таблицы примерно за 2 минуты. Я разбил диски на простые наборы raid 1 и позволил серверу sql обрабатывать чередование ... а не san. 2 минуты упали до 45 секунд.

В сети есть и другие статьи об этом ... очень трудно найти рейда 'истинно верующих', чтобы принять это, вот почему я так настойчив в этом вопросе.

0 голосов
/ 06 октября 2008

Я бы также порекомендовал установить набор базовых значений, который позволит вам сделать несколько более обоснованных предсказаний, чем просто поднять палец (или запрос StackOverflow, кажется смутно и странно похожим на эти две концепции).

С некоторыми базовыми значениями вы также можете измерить эффективность ваших изменений и стать хорошей основой для будущих обновлений ...

(Если не известно, возьмите какую-нибудь литературу (или википедию) по Performance Engineering. Это целая ветвь материала, которая занимается именно такими проблемами).

0 голосов
/ 03 октября 2008

RAID 5 хорош, если вы используете аппаратный контроллер с приличным объемом кэш-памяти с резервным питанием от батареи. Выберите размер чанка и настройте БД так, чтобы размер чередования (диски данных * размер чанка) равнялся размеру записи БД Убедитесь, что ваш раздел данных [выровнен / кратен] размеру полосы.

В противном случае RAID 1 + 0 всегда является хорошим выбором для серверов БД.

...