Одиночный диск против нескольких дисков
-
16-10-2019 - |
Вопрос
Как правило, узкое место в RDBMS (я являюсь пользователем MySQL). SSD обеспечивает отличную производительность по сравнению с обычными шпинделями.
Вопрос: Возможно ли улучшить производительность, прикрепляя несколько дисков с уменьшенным пространством, потому что для чтения данных будет доступно больше головок?
Как замена привода 2 7TB 7,2K в минуту на 4 500 ГБ 7,2K RPM Drive?
Решение
Это может сильно зависеть от двигателя хранения.
Для Myisam, я думаю, это была бы отличная идея, потому что вы можете сделать данные столь же смежными, как вы хотите. Это принесет пользу запросам, связанным с объемными операциями и сканированием больших диапазонов. Набор инструментов для сжатия и ремонта Myisam для улучшения формата таблицы также может сделать доступ немного лучше. Одновременные вставки IMHO могут процветать в такой дисковой среде.
Innodb - совершенно другая история.
Если у вас есть innodb_file_per_table Отключены, данные могут быть разбросаны по всей IBDATA1 и, таким образом, разбросаны между множественными дисками. Вы можете запустить таблицу оптимизации против таблицы InnoDB и сделать страницы данных и индекса смежными, но это может вызвать две проблемы:
- Заставляет IBDATA1 расти
- Ухудшать производительность со временем
Не забывайте о четырех типах данных, которые находятся в IBDATA1:
- Метаданные таблицы
- Таблицы страниц данных
- Индексные страницы данных
- MVCC Данные
Существует постоянное написание данных MVCC для защиты целостности данных. Существует также постоянное взаимодействие с IB_LOGFILE0 и IB_LOGFILE1 (REDO LOGS). Существуют постоянные данные, промывая каждые 10 секунд от пула буферов InnoDB обратно к. В целом, можно с уверенностью сказать, что распространение данных на нескольких дисках и производительность ввода-вывода может показать улучшение производительности от маргинала до самой и не появится достаточного количества фрагментации в IBDATA1.
Теперь, если innodb_file_per_table включена, все может быть немного грязным. Вот почему:
Как только вы очистите Ibdata1 и отделите все таблицы Innodb от Ibdata1, у вас будет меньший IBDATA1. Тем не менее, каждый доступ к таблице InnoDB требует постоянного навигации через IBDATA1 через метаданные таблицы. Вы буквально не можете семантически отделить метаданные таблицы (Ibdata1) от таблицы (.ibd). Везде, где живет Ibdata1, диск ввод ввода/вывода всегда должен проходить через Ibdata1.
Общий эффект: фрагментация таблицы ограничена.
Как насчет того, чтобы помещать все файлы .ibd в другой набор дисков, кроме IBDATA1 и использования символов? По словам Percona, это создает больше хаоса.
ВЫВОД
Когда дело доходит до использования нескольких дисков на одном диске, я очень предпочитаю Myisam над Innodb.
Другие советы
Да, несколько дисков обеспечат лучшую пропускную способность благодаря замечательной технологии, которую мы называем RAID. Для базы данных вам понадобится RAID 10 (полосатые зеркала).
С 4 (n) дисками вы удваиваете (N/2) свою скорость записи и четырехкратную (n) последовательную пропускную способность. Время искать, хотя останется примерно таким же, и вы потеряете половину места для зеркалирования.