Я только начинаю узнавать об использовании памяти на SQL Server. При использовании запроса в ответе на вопрос SQL Server 2008 R2 «Ghost Memory»? Я обнаружил, что одна база данных занимает львиную долю пространства в пуле буферов. Глядя дальше, используя sys.allocation_units
и sys.indexes
, я подтвердил, что это, вероятно, вызвано интенсивным использованием индексов в базе данных. Большинство индексов являются кластерными.
Другой разработчик базы данных считает, что у нас проблемы с памятью на сервере - что запросы начинают выполняться долго, потому что нет доступной памяти.
Мой вопрос здесь - использует ли эти индексы и их существование в пуле буферов память, доступную для других процессов?
"Another database developer believes we are having memory issues on the server"
- на основании чего? Сколько оперативной памяти имеет сервер, каковы параметры памяти экземпляра и сколько памяти используется кэшем процедур?Ответы:
Да, страницы данных используемого индекса, которые кэшируются в пуле буферов, будут занимать пространство в кэше данных . Но не позволяйте этому отказаться от использования индексов (во-первых, кластерный индекс - это фактические данные таблицы, так что имейте это в виду). Использование индексов (конечно, правильно спроектированных и реализованных) - это хорошо.
Проблемы с памятью, скорее всего, связаны с отсутствием индексов в ваших таблицах . Погрузитесь в проблемы с памятью, какие именно проблемы? У вас низкая продолжительность жизни страницы ? Как настроена ваша память на сервере? Ограничивает ли максимальный объем памяти сервера размер пула буферов?
Чтобы получить разбивку страниц индекса в вашем кэше данных, вы можете выполнить следующий запрос:
Чтобы получить эту статистику по базе данных:
источник
Индексы занимают место в буферном пуле, да. Это еще одна причина, почему вы должны позаботиться о стратегии индексирования и минимизировать дубликаты.
Помните, что кластерный индекс - это таблица . Единственные издержки, которые существуют для кластеризованного индекса сверх кучи (что обычно нежелательно), относятся к страницам неполных индексов и включению ключа кластера во все некластеризованные индексы для этой таблицы. Вот почему узкие ключи кластера являются предпочтительными.
Статьи Кимберли Триппа о кластерном выборе ключей являются отличным справочным материалом для этого.
источник