Управление оперативной памятью
ОГЛАВЛЕНИЕ
Помимо этого ранние версии SQL Server не только требовали выделения фиксированного объема оперативной памяти для всего SQL Server, но также распределяли выделенный объем памяти по секциям для выполнения определенных целей. Одна из таких секций, процедурный кэш, предназначалась только для хранения планов исполнения запросов и хранимых процедур. Размер процедурного кэша фиксировался при старте службы SQL Server и, подобно общему объему выделяемой памяти, размер этого кэша нельзя было изменить при перезапуске SQL Server.
Начиная с версии SQL Server 7.0, вся картина управления памятью коренным образом изменилась. У системных администраторов не только появилась возможность динамически изменять общий объем выделенной для SQL Server памяти, но и перераспределять в случае необходимости память внутри SQL Server между различными системными ресурсами. Если SQL Server требуется больше памяти для планов исполнения запросов, можно освободить несколько страниц, содержащих данные, и заполнить их планами исполнения запросов. Или же наоборот, если требуется больше памяти для данных, считываемых с жесткого диска, то можно удалить из оперативной памяти планы редко исполняемых запросов.
Поскольку я знаю, что в SQL Server реализована стратегия динамического использования оперативной памяти, меня очень удивил вопрос о работе процедурного кэша, который мне задал слушатель на одном из семинаров. Он где-то читал о новом переключателе, который можно использовать при запуске SQL Server 7.0, чтобы ограничить объем используемой процедурным кэшем оперативной памяти. Хотя я ничего не знала об этом переключателе, я верила, что слушатель не выдумал эту возможность. Однако в SQL Server 7.0 нет ничего, что называлось бы процедурным кэшем, поэтому после семинара я занялась изучением ситуации. В файле readme_txt, который сопровождает пакет с исправлениями Service Pack 2 (SP2) для SQL Server 7.0, я обнаружила то, о чем говорил мой коллега. Но прежде чем я расскажу об этом переключателе, обратимся к основам управления оперативной памятью в SQL Server 2000 и SQL Server 7.0.