Мой опыт работы с базами данных с довольно небольшими веб-приложениями, но теперь я работаю с набором данных для избирателей для всего штата. Есть около 3,5 млн избирателей, и мне нужно будет немного сообщать о них по их адресу, истории голосования, возрасту и т. Д. Сам веб-приложение будет написано с помощью Django, поэтому у меня есть несколько вариантов базы данных, включая MySQL и PostgreSQL.Является ли MySQL подходящим для чтения-тяжелой базы данных с 3.5m + строк? Если да, то какой двигатель?
В прошлом я почти исключительно использовал MySQL, так как он был так легко доступен. Я понимаю, что 3,5 м строк в таблице на самом деле не так уж и много, но это самый большой набор данных, с которыми я лично работал, поэтому я вышел из своей личной зоны комфорта. Кроме того, этот проект не является быстрым приложением, хотя я хочу, чтобы я выбрал лучшую базу данных для работы, а не только ту, с которой мне больше всего нравится.
Если MySQL является подходящим инструментом для работы, я также хотел бы знать, имеет ли смысл использовать InnoDB или MyISAM. Я понимаю основные различия между ними, но некоторые источники говорят, что использовать MyISAM для скорости, но InnoDB, если вы хотите «настоящую» базу данных, в то время как другие говорят, что все современные использования MySQL должны использовать InnoDB.
Спасибо!
+1 - мои чувства точно. Я больше не использую MyISAM, если у меня нет конкретных причин. Это очень способно, я работал с таблицами с 20 миллионами + записей без проблем, но транзакционные возможности InnoDB обычно перевешивают любые различия в производительности, которые вам могут понадобиться, пока вы не столкнетесь с определенными проблемами производительности. – zombat
Спасибо Тиму! Могу ли я попросить вас расширить «точно настроить ваши индексы»? Я получаю назначение индексов, но я не уверен, что такое компромисс - а почему бы и не индексировать все. Я также немного смущен тем, что значит настроить индекс - у меня создалось впечатление, что вы решили индексировать столбец или нет, и все. –
Когда вы создаете индекс, вы добавляете дополнительные накладные расходы при выполнении вставок (немного, немного, но это добавляет). Если вы индексируете все, то это может действительно замедлить работу. Индексы могут быть основаны на одном поле, первом N байтах (или символах) поля или двух или более полей. Вам нужно работать с инструментом «объяснять запрос» и оценивать вашу систему, чтобы выяснить, какой наилучший микс для вашего конкретного набора данных и обычаев, которые вы обычно выполняете. Ознакомьтесь с документами mysql: http://dev.mysql.com/doc/refman/5.0/en/create-index.html для получения дополнительной информации. –