У меня есть база данных MySQL, которая содержит миллионы строк в таблице, а всего 9 таблиц. База данных полностью заполнена, и все, что я делаю, это чтение, т.е. нет никаких INSERT или UPDATE. Данные хранятся в таблицах MyISAM.
Какая файловая система Linux будет работать лучше всего при таком сценарии? В настоящее время у меня есть xfs. Но я где-то читал, что у xfs ужасная производительность чтения. Это правда? Следует ли перенести базу данных на файловую систему ext3?
Спасибо
В общем, две достойные Linux FS в наши дни - это XFS и EXT4, обе файловые системы на основе экстентов.
Я не видел серьезных различий между ними, но оба они заметно лучше, чем EXT3.
Возможно, лучшее, что вы можете сделать, это:
notatime
вариант крепления)EXPLAIN SELECT ...
Попробуйте MySQLTuner, чтобы понять, в чем заключается ваша проблема. Я бы предположил, что это плохая производительность индекса или действительно плохой коэффициент попадания в кеш. Вероятно, слишком мало для вашего набора данных, не зная дополнительной информации.
wget mysqltuner.pl
(отполированное доменное имя с перенаправлением на настоящий скрипт.)
И, как и другие плакаты, я очень сомневаюсь, что производительность вашего диска или выбор файловой системы являются узким местом.
Если вы серьезно относитесь к производительности своей базы данных MySQL, я настоятельно рекомендую провести собственные тесты в тестовой среде. Производительность файловой системы может значительно отличаться от одной версии ядра к другой, и выбор может значительно зависеть от конкретной рабочей нагрузки.
Для простого сравнения просто настройте тестовый сервер с той же версией ядра, что и ваша производственная система, и используйте sysbench для тестирования xfs, ext3 и ext4.
Для лучшего обзора вы восстановите последнюю резервную копию своей базы данных на тестовом сервере и создадите несколько сценариев, которые генерируют нагрузку, аналогичную вашей рабочей нагрузке.
Кроме того, каждый раз, когда вы планируете обновить ядро на своей производственной машине, вам следует повторно запускать тесты, чтобы увидеть, есть ли регрессии. Поскольку в этот момент вы не можете легко переключить файловую систему (ну, это зависит от вашей настройки), вы должны, по крайней мере, убедиться, что производительность не снизилась после обновления.
Редактировать:
Кстати, вы можете найти много хороших советов по Блог о производительности MySQL.
Насколько велика фактическая база данных? Вы упомянули миллионы строк, но это не говорит о том, насколько велика каждая строка. Я собираюсь сказать, что если вы не выполняете никаких обновлений и это просто база данных только для чтения, подумайте о загрузке ее в память (при условии, что она подходит и при условии, что у вас достаточно оперативной памяти).