Поиск и устранение неисправностей проблем памяти SQL Server

В настоящее время активная база данных продолжает использовать больше памяти, пока она не достигает приблизительно 5.8 ГБ и затем начинает бросать частые ошибки из-за тайм-аута соединения. Я понимаю, что SQL Server разработан для использования как можно большей памяти, но Это не должно бросать те ошибки. В частности, что-то, кажется, работает который причины память для роста приблизительно на 2 ГБ очень быстро. DB имеет много индексов и хранимых процедур, как я разыскиваю, какой ответственен?

1
задан LaserJesus 29 July 2010 в 09:02
поделиться

2 ответа

SQL-сервер предназначен для увеличения и использования всей памяти в системе. Поэтому он будет делать именно это, выделяя память для кэша планов запросов, таблиц и индексов.Предполагается, что память высвободится, когда это потребуется системе, но по моему опыту, система начнет использовать больше памяти, используя систему подкачки, и все значительно замедлится, прежде чем сервер sql начнет высвобождать память, которую он хранит.

Если ваши данные не так велики, как память, которую они, кажется, съедают, и у вас тоже не слишком много подключений, то они должны распределять память для множества используемых кешей.

Вы можете найти это в счетчиках диспетчера памяти sql server perfmon, чтобы определить, какой компонент sql server потребляет большую часть памяти.

Я столкнулся именно с этим и вот подробности того, как я решил проблему (ссылка) - комбинация верхних ограничений памяти (sp_configure 'max server memory') + обеспечение того, чтобы кеш плана запроса выполнял не становиться слишком большим

1
ответ дан 2 September 2019 в 22:38
поделиться

Это не будет память как таковая: SQL Server предназначен для ее использования

Вероятно, у вас есть длительная транзакция или что-то еще, например загрузка, блокирующая другие процессы.

Запустите это, чтобы узнать, что происходит.

SELECT
    p1.SPID AS blockedSPID, p2.SPID AS blockingSPID, ...
FROM 
    master..sysprocesses p1
    JOIN
    master..sysprocesses p2 ON p1.blocked = p2.spid

И когда вы скажете «увеличивается на 2 ГБ». вы используете файл MDF или LDF?

  • LDF = длительная или открытая транзакция
  • MDF = много данных, которые генерируются / выгружаются (я видел триггер мошеннического аудита)

Увеличение памяти на 2 ГБ, скорее всего, будет связано с данными в кеше

1
ответ дан 2 September 2019 в 22:38
поделиться
Другие вопросы по тегам:

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