Стратегии извлечения результатов из огромной таблицы базы данных
Я уверен, что многие сталкиваются с этой проблемой: на странице JSP внешнего интерфейса пользователь устанавливает некоторые критерии, на основе которых строится SQL-код и используется для получения результатов из одной или нескольких таблиц базы данных. Проблема в том, что эта таблица растет на 1 миллион в день и становится гигантской.
Я знаю, что нет однозначного ответа на этот вопрос: как мы можем ускорить эту процедуру? Индексирование может быть одним (о котором я много слышал, но мало что знаю), и еще одна вещь, о которой я думаю, - это использовать какое-то специальное решение для кэширования, такое как Gigaspace. Поможет ли Hibernate в этом случае?
Кто-нибудь еще хочет добавить свои 2 цента?
Большое спасибо! Джон
2 ответа
Ну да, вам нужно проиндексировать вашу базу данных!
Если вы даже не индексируете свою базу данных, то вам, вероятно, нужно начать с чтения того, как правильно индексировать вашу базу данных.
Кроме того, само по себе не должно иметь значения количество миллионов строк в таблицах вашей базы данных: самое главное в достойной системе баз данных - справляться с таблицами с миллионами строк. Но вы должны убедиться, что указание того, какие строки фактически извлекаются из этих миллионов, является разумным и что рассматриваемые запросы могут выходить за пределы соответствующих индексов (например, из-за параметров, введенных пользователем для их сужения). "Добавление индекса" не обязательно является волшебной панацеей: вам нужно убедиться, что у вас есть добавленные индексы, соответствующие тому, как выглядят ваши запросы к тому времени, когда они попадают в базу данных.
Лично я не пошел бы по пути добавления ложного кеширования и других уровней сложности, пока (а) вы не убедитесь, что на практике они вам нужны, и (б) вы можете на самом деле убедиться, что добавляемые вами слои будут решать проблема, которую вы хотите, чтобы они решили. Если вы еще не дошли до индексации своей базы данных, тогда я бы действительно начал с простого простого, соответствующим образом оптимизированного решения и взял бы его оттуда.
Индекс является обязательным с таким количеством данных или даже фракция этого! Что касается других ответов, то это действительно зависит от того, что вы планируете делать с таким количеством данных, потому что одна стратегия не будет охватывать все варианты использования.