2010-04-22 3 views
0

Я строю систему с использованием django, Sphinx и MySQL, которая очень быстро становится довольно большой. В базе данных в настоящее время имеется около 2000 строк, и я написал программу, которая собирается заполнить ее еще 40 000 строк за пару дней. Поскольку база данных находится в прямом эфире прямо сейчас, и с тех пор я никогда не имел базу данных с этим много информации в нем, я волнуюсь о некоторых вещах:Эффективность MySQL по отношению к размеру базы данных/таблицы

  1. добавляет все эти строки собираются серьезно ухудшить эффективность моего приложения django? Нужно ли мне вернуться через него и оптимизировать все мои вызовы в базе данных, чтобы они делали что-то более умно? Или это приведет к тому, что база данных будет работать медленно, насколько я вообще ничего не могу с этим поделать?

  2. Если вы издеваетесь над моими 40-килограммовыми рядами, то мой следующий вопрос: в какой момент ДОЛЖЕН ЛИ я беспокоиться? Вероятно, я скоро добавлю еще пару сотен тысяч, поэтому я волнуюсь, и я волнуюсь.

  3. Как будет выглядеть сфинкс обо всем этом? Будет ли это волноваться, когда он осознает, что он должен индексировать все эти данные? Или это будет хорошо? Это нормально для этого? Если да, то в какой момент я должен беспокоиться о том, что для Sphinx слишком много данных?

Спасибо за любые мысли.

ответ

1

Для обычных запросов 2000 строк ничего нет - даже без индекса это будет очень быстро, так как вся таблица может быть кэширована в памяти. 100000 строк также должны работать нормально в большинстве ситуаций, хотя, если у вас нет соответствующих индексов или ваши запросы не используют доступные индексы, то вы заметите это к настоящему времени - запросы, которые должны занимать секунды, могут занимать минуты, если они не используют индексы правильно. Но проблема не должна занять много времени - запустите EXPLAIN на ваш медленный запрос и посмотрите, почему он медленный, и выясните, какие индексы вам нужны.

К тому времени, когда вы получите миллионы строк или десятки миллионов строк, вам нужно будет более тщательно подумать о своем дизайне базы данных и стратегии индексирования. Возможно, у вас есть сотни миллионов строк в таблице, если вы все сделаете правильно.

+0

Итак, поскольку это относится к django, db был создан для меня. Создает ли django указанное выше индексирование? – mlissner

+0

Нет, вам нужно создать индексы самостоятельно. –

+0

Прохладный. Я сделал это, и мои времена поиска значительно улучшились. – mlissner

Смежные вопросы