У меня есть программное обеспечение, которое выполняет тяжелую обработку на основе некоторых файлов. Я должен запросить некоторые таблицы в SQL Server в процессе, и это убивает БД и производительность приложения. (другие приложения используют одни и те же таблицы).Уменьшить результаты запроса кэширования SQL Server
После оптимизации запросов и кода, получения лучших результатов, но недостаточно. После исследования я пришел к решению: кэширование некоторых результатов запроса. Моя идея - это кеш-таблица с одной конкретной таблицей (обозначенной как накладные), для которой нужен процесс.
Я думал об использовании Fabric AppCache (я нахожусь в стеке MS), сделал некоторые тесты, у него большое использование памяти для небольших объектов (у приложения appcache есть ~ 350 МБ использования ram без объектов). Но мне нужно сделать некоторые запросы в эти таблицы результатов (например, поиск по LastName, Ssn, BirthDate и т.д.)
Мой второй вариант является MongoDb как хранилище кэша. У меня есть исследование об этом, и большинство людей, которых я читаю, рекомендуют использовать memcached или Redis, но я использую серверы Windows, и они не поддерживаются официально.
Использование mongo в качестве хранилища кешей в этом случае является хорошим подходом? Или AppFabric Caching + поиск тегов лучше?
Данные не часто меняются. Реальная проблема заключается в том, сколько времени мне нужно запросить SQLServer для каждой строки файла + тип запроса, который я делаю (мои запросы в основном состоят из столбцов varchar). Этот запрос блокирует другие приложения, а также слишком долго обрабатывает файл. Сегодня я обрабатываю пакет (~ 1 МБ на файл) 260 МБ за 1.07 часа, в ближайшем будущем у меня будут файлы GB для обработки, и обработка не может продолжаться более одного дня. – Zingui
Если данные довольно статичны и ваша единственная проблема заключается в том, что построение результирующего набора занимает много времени, вы можете создать «материализованное представление» («индексированное представление» на Sql Server). См. Здесь: http: // msdn.microsoft.com/en-us/library/dd171921%28SQL.100%29.aspx Для создания возможностей поиска вам может потребоваться создать дополнительные таблицы и т. д. Затем в каком-то процессе будет заполнено все это. Тогда ваши данные будут очень доступны на сервере Sql. Если это не соответствует вашим условиям, вы всегда можете использовать память сервера с помощью кэширующего механизма по вашему выбору. –
Индексированное представление будет работать и сохранить некоторые издержки на некоторое время, но в будущем мне придется использовать кеш (на выделенном сервере), чтобы уменьшить эти накладные расходы. Спасибо @ T.S. – Zingui