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