Есть веб приложение под .net core в котором много где идет считывание из базы разных справочников. некоторые меняются редко (раз в сутки и реже), некоторые могут чаще, но всё равно не раз в минуту.
Подскажите что в качестве кэша можно использовать чтобы убрать частые обращения в базе?
и второй вопрос. если справочник изменился какие есть механизмы обновления кэша для измененной таблицы?
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, peer, Вы писали:
P>>Подскажите что в качестве кэша можно использовать чтобы убрать частые обращения в базе?
W>А зачем их убирать? База не справляется?
в пики, раз в месяц, бывает что страниа на гет даже не открывается, не то что апдейт в базе сделать
P>>и второй вопрос. если справочник изменился какие есть механизмы обновления кэша для измененной таблицы?
W>Про две самых сложных проблемы в computer science ты конечно в курсе?
P>Есть веб приложение под .net core в котором много где идет считывание из базы разных справочников. некоторые меняются редко (раз в сутки и реже), некоторые могут чаще, но всё равно не раз в минуту. P>Подскажите что в качестве кэша можно использовать чтобы убрать частые обращения в базе?
EF DataContext P>и второй вопрос. если справочник изменился какие есть механизмы обновления кэша для измененной таблицы?
Следящий за базой циклический тред
Здравствуйте, Alex.Che, Вы писали:
AC>Здравствуйте, peer, Вы писали:
P>>в пики, раз в месяц, бывает что страниа на гет даже не открывается, не то что апдейт в базе сделать
AC>что показывают в это время средства мониторига базы?
Здравствуйте, peer, Вы писали:
P>Подскажите что в качестве кэша можно использовать чтобы убрать частые обращения в базе?
Да ничего особо нового: простой локальный кэш — System.Runtime.Caching.MemoryCache или Microsoft.Extensions.Caching.MemoryCache
Более навороченный и/или распределённый — Redis или подобный софт.
P>и второй вопрос. если справочник изменился какие есть механизмы обновления кэша для измененной таблицы?
Ограничение времени кэширования, отельный периодический опрос валидности кэша, уведомление об изменениях из базы или от изменяющего данные софта.
Но имеет смысл и в базу посмотреть, возможно, можно сделать кэш прямо там, отдельной таблицей или материализованной вьюшкой.
Но что-то мне кажется что у вас структура базы и запросы далеки от оптимальных, что вы испытываете такие проблемы.
Ведь база данных сама не ходит на диск, если нужные для обработки запроса данные уже находятся в памяти. Но если у вас структура и запросы плохие, то для определения какие данные нужны надо обойти все записи, что упрется в диск.
Я на практике настолько редко видел что база упиралась именно в диск, а не плохие запросы, что не готов поверить, что у вас именно такой случай, учитывая что вы задаете такой вопрос.
P>и второй вопрос. если справочник изменился какие есть механизмы обновления кэша для измененной таблицы?
По ссылке выше все есть.