Используйте базу данных в памяти или поисковую систему только для чтения, чтобы сделать сайт быстрее
У меня есть приложение, которое требует выполнения большого количества запросов для каждой отдельной страницы, что делает его медленнее.
Я пытался использовать системы кэширования (Redis), но реализация немного сложна и займет время, так как каждый запрос зависит от множества зависимостей.
Я думаю, есть еще один клон базы данных в памяти, который должен быть только для чтения, но каждый раз, когда происходит обновление или вставка базы данных, следует обновить строки памяти? Как вы думаете, это будет эффективно и практично, и если да, то есть ли какой-либо способ достичь этого, так как я использую postgres.
Моя вторая идея состояла в том, чтобы использовать что-то вроде поисковой системы sphinx для всех запросов, и в этом случае мне нужно будет использовать индексы в реальном времени.
Это работает или есть лучшее решение.
Обратите внимание: размер базы данных составляет около 50 ГБ, и я могу получить память для всего этого.
С уважением,,,
1 ответ
Вообще это не умная идея. Видите, базы данных написаны умными людьми и используют как можно больше памяти для кэширования. Если вы ударите диск слишком часто, у вас возникнут проблемы с памятью - и сохранение ДРУГОЙ копии в той же ограниченной памяти не улучшит ситуацию.
То, что кто-то должен сделать, это базовый анализ. Что является узким местом? Почини это. Больше памяти, SSD - типичные шаги здесь. Какие самые дорогие запросы? Опыт подсказывает, что у вас, вероятно, есть молотки, которые наносят большой урон, и проблема не в "слишком большом количестве запросов", а в том, что, черт возьми, это индекс.
Но база данных в памяти, как правило, не должна иметь значения, потому что база данных, которая чего-либо стоит, уже использует столько памяти, сколько может, как кэш. Это - естественно - если только некоторые администраторы не установят смехотворно низкий предел для "сохранения памяти", а затем возникнут проблемы с производительностью.
И тогда вы действительно должны начать с кэширования.