SQL Server - Сила DB в памяти?

Вы могли бы хотеть выполнить S.M.A.R.T. длинная самопроверка, если поддержка дисков это. Это может дать Вам больше информации о состоянии диска. Если Ваш NAS не может сделать этого, и если можно вытащить диск или выключить NAS в течение нескольких часов, то можно сделать, длинная самопроверка с жестким диском включила другую машину.

14
задан 1 May 2009 в 23:37
7 ответов

Нет, нет способа вызвать базу данных в кэш, к сожалению. Ваш метод грубой силы является, вероятно, самым простым. Вы смогли становиться ближе при помощи индексных сценариев дефрагментации с очень низкой пороговой установкой, как высказывание восстанавливают индекс, если это - фрагментированный 1%, как это:

http://sqlserverpedia.com/wiki/Index_Maintenance

Это займет больше времени и включит больше записей к диску, но это будет иметь побочный эффект дефрагментации Вашими индексами и статистикой обновления, которая является хорошей идеей так или иначе.

15
ответ дан 2 December 2019 в 21:05

Хорошо - я не могу прокомментировать ответ Brent (все же, поскольку у меня нет достаточного количества представителей) - но если Вы собираетесь пойти путем дефрагментации, не обязательно восстановите индекс - поскольку это создаст новые индексы, возможно выращивая базу данных, если не будет достаточного свободного пространства, и гарантируя, что Ваше следующее резервное копирование журнала является, по крайней мере, размером Ваших индексов, и Ваш журнал может иметь тонну записей журнала в также (в зависимости от модели восстановления). Если Вы собираетесь сделать маршрут дефрагментации, сделайте ИЗМЕНИТЬ ИНДЕКС... РЕОРГАНИЗУЙТЕ, который не требует никакого свободного пространства (хорошо, одна 8k страница), но будет читать уровень листа в память и только работать на фрагментированных страницах. Неуровни листа должны войти быстро после того, как некоторые запросы и (в зависимости от разветвления на выходе) должны быть намного меньшим количеством данных, чем уровень листа.

9
ответ дан 2 December 2019 в 21:05

Почему Вы не устанавливаете второй экземпляр SQL Server с только, что база данных, и установила минимальную память для того экземпляра к 6 ГБ?

Это гарантирует, что Ваши другие базы данных никогда не незаконно охотятся на память от Вашей "маленькой, но очень важной" базы данных.

Это будет также означать, что можно вывести другой экземпляр из эксплуатации, и маленький DB останется в памяти.

0
ответ дан 2 December 2019 в 21:05

Я использовал бы профилировщика для проверки sql. Сравните 'логические' чтения с 'физическими' чтениями. SQL-сервер умен и будет использовать RAM, в которой он нуждается для большинства результатов effiecient.

Также проверьте, что Ваша автостатистика до даты.

Без большей идеи типа запроса и размеров таблицы базы данных это звучит немного странным.

0
ответ дан 2 December 2019 в 21:05

Почему объекты базы данных сбрасываются от кэша во-первых? Вы перезапускаете сервисы SQL или берете базу данных, off/online? Или они выставляют путем кэширования от других баз данных?

С уважением,

SCM.

1
ответ дан 2 December 2019 в 21:05
  • 1
    В настоящее время система находится в тестировании и перезагружена часто; пользователи жалуются после этого. В производстве, надо надеяться, намного меньше –  Matt Rogish 18 May 2009 в 22:07
  • 2
    Больше походит на задержки от инициирования соединения; я wouldn' t ожидают, что пользователи будут видеть, что заметное различие в кэшировало/не кэшировало чтения; если there' s другие факторы как перегруженные или медленные диски включен. –  SqlACID 20 May 2009 в 18:19

Если база данных является настолько маленькой, рассмотрите помещение ее на SSD?

1
ответ дан 2 December 2019 в 21:05

У меня было несколько сценариев, когда обновление статистики с помощью FULLSCAN по ключевым таблицам принудительно помещало данные в кеш и значительно ускоряло мои последующие DML для этих таблиц. И это не было результатом устаревшей статистики, поскольку это не привело к изменению планов выполнения.

1
ответ дан 2 December 2019 в 21:05

Теги

Похожие вопросы