Стратегии извлечения результатов из огромной таблицы базы данных

Я уверен, что многие сталкиваются с этой проблемой: на странице JSP внешнего интерфейса пользователь устанавливает некоторые критерии, на основе которых строится SQL-код и используется для получения результатов из одной или нескольких таблиц базы данных. Проблема в том, что эта таблица растет на 1 миллион в день и становится гигантской.

Я знаю, что нет однозначного ответа на этот вопрос: как мы можем ускорить эту процедуру? Индексирование может быть одним (о котором я много слышал, но мало что знаю), и еще одна вещь, о которой я думаю, - это использовать какое-то специальное решение для кэширования, такое как Gigaspace. Поможет ли Hibernate в этом случае?

Кто-нибудь еще хочет добавить свои 2 цента?

Большое спасибо! Джон

2 ответа

Ну да, вам нужно проиндексировать вашу базу данных!

Если вы даже не индексируете свою базу данных, то вам, вероятно, нужно начать с чтения того, как правильно индексировать вашу базу данных.

Кроме того, само по себе не должно иметь значения количество миллионов строк в таблицах вашей базы данных: самое главное в достойной системе баз данных - справляться с таблицами с миллионами строк. Но вы должны убедиться, что указание того, какие строки фактически извлекаются из этих миллионов, является разумным и что рассматриваемые запросы могут выходить за пределы соответствующих индексов (например, из-за параметров, введенных пользователем для их сужения). "Добавление индекса" не обязательно является волшебной панацеей: вам нужно убедиться, что у вас есть добавленные индексы, соответствующие тому, как выглядят ваши запросы к тому времени, когда они попадают в базу данных.

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

Индекс является обязательным с таким количеством данных или даже фракция этого! Что касается других ответов, то это действительно зависит от того, что вы планируете делать с таким количеством данных, потому что одна стратегия не будет охватывать все варианты использования.

Другие вопросы по тегам