Вы могли бы хотеть выполнить S.M.A.R.T. длинная самопроверка, если поддержка дисков это. Это может дать Вам больше информации о состоянии диска. Если Ваш NAS не может сделать этого, и если можно вытащить диск или выключить NAS в течение нескольких часов, то можно сделать, длинная самопроверка с жестким диском включила другую машину.
Нет, нет способа вызвать базу данных в кэш, к сожалению. Ваш метод грубой силы является, вероятно, самым простым. Вы смогли становиться ближе при помощи индексных сценариев дефрагментации с очень низкой пороговой установкой, как высказывание восстанавливают индекс, если это - фрагментированный 1%, как это:
http://sqlserverpedia.com/wiki/Index_Maintenance
Это займет больше времени и включит больше записей к диску, но это будет иметь побочный эффект дефрагментации Вашими индексами и статистикой обновления, которая является хорошей идеей так или иначе.
Хорошо - я не могу прокомментировать ответ Brent (все же, поскольку у меня нет достаточного количества представителей) - но если Вы собираетесь пойти путем дефрагментации, не обязательно восстановите индекс - поскольку это создаст новые индексы, возможно выращивая базу данных, если не будет достаточного свободного пространства, и гарантируя, что Ваше следующее резервное копирование журнала является, по крайней мере, размером Ваших индексов, и Ваш журнал может иметь тонну записей журнала в также (в зависимости от модели восстановления). Если Вы собираетесь сделать маршрут дефрагментации, сделайте ИЗМЕНИТЬ ИНДЕКС... РЕОРГАНИЗУЙТЕ, который не требует никакого свободного пространства (хорошо, одна 8k страница), но будет читать уровень листа в память и только работать на фрагментированных страницах. Неуровни листа должны войти быстро после того, как некоторые запросы и (в зависимости от разветвления на выходе) должны быть намного меньшим количеством данных, чем уровень листа.
Почему Вы не устанавливаете второй экземпляр SQL Server с только, что база данных, и установила минимальную память для того экземпляра к 6 ГБ?
Это гарантирует, что Ваши другие базы данных никогда не незаконно охотятся на память от Вашей "маленькой, но очень важной" базы данных.
Это будет также означать, что можно вывести другой экземпляр из эксплуатации, и маленький DB останется в памяти.
Я использовал бы профилировщика для проверки sql. Сравните 'логические' чтения с 'физическими' чтениями. SQL-сервер умен и будет использовать RAM, в которой он нуждается для большинства результатов effiecient.
Также проверьте, что Ваша автостатистика до даты.
Без большей идеи типа запроса и размеров таблицы базы данных это звучит немного странным.
Почему объекты базы данных сбрасываются от кэша во-первых? Вы перезапускаете сервисы SQL или берете базу данных, off/online? Или они выставляют путем кэширования от других баз данных?
С уважением,
SCM.
Если база данных является настолько маленькой, рассмотрите помещение ее на SSD?
У меня было несколько сценариев, когда обновление статистики с помощью FULLSCAN по ключевым таблицам принудительно помещало данные в кеш и значительно ускоряло мои последующие DML для этих таблиц. И это не было результатом устаревшей статистики, поскольку это не привело к изменению планов выполнения.