Оптимізація продуктивності зазвичай виконується за такими характеристиками
- Завантаження процесора
- Використання пам'яті
- Попадання в кеш
- дискова підсистема
- оптимізація запитів
Для пам'яті діє правило чим більше тим краще ,. Коли її починає не вистачати привід
перевірити чому ж вона забита. Про це докладніше нижче.
Управління пам'яттю SQL Server.
Memory manager (ММ) є основним елементом, який управляє розподілом пам'яті в SQL сервері. Даний компонент автоматично розподіляє доступну SQL сервера пам'ять, знижуючи необхідність ручної настройки. Після завантаження SQL ММ визначає первинний об'єм розподіленої пам'яті і далі по мірі зміни навантаження динамічно резервує або звільняє оперативну пам'ять. Таким чином, ММ управляє взаємодією SQL сервера з операційної системи в контексті управління пам'яттю. Основні комноненти:
1. Memory Clerks (Інтерфейс, який використовується споживачами для управління пам'яттю, кожен споживач має один або кілька клерків пам'яті, використовується для розподілу, звільнення і моніторингу використання пам'яті, кожен клерк пов'язаний з брокером, sys .dm _os _memory _clerks)
2. Memory Objects (Кучі пам'яті, які використовують інтерфейс клерків пам'яті щоб отримати доступ до page allocator для виділення сторінок. Memory Objects не використовують інтерфейси віртуальної або загальної пам'яті, цей елемент використовує тільки механізм розподілу сторінок. Багато компонентів SQL Server звертаються безпосередньо до MO, минаючи клерки пам'яті. МО надають можливість розподілити діапазони пам'яті довільного розміру., sys.dm_os_memory_objects)
3. Memory Nodes (Головне завдання цього компонента полягає у визначенні області виділення пам'яті на вузлі NUMA , Якщо пам'яті не вистачає може бути виділена з сусіднього вузла, sys.dm_os_memory_nodes)
4. Memory Brokers (відстежує запити пам'яті від компонентів SQL і зіставляє з поточними показники її використання. Грунтуючись на отриманій інформації, брокер обчислює «оптимальний» розмір пам'яті, яка може бути розподілена між компонентами. Брокер повідомляє компоненти про своїх обчисленнях, після цього кожен компонент використовує ці відомості для подальшого використання пам'яті.)
5. Memory Pools (використовується щоб встановити ліміти пам'яті, internal - механізми SQLOS, Default -пул за замовчуванням для всього іншого). Більш докладно все давно описано на Хабре Max server memory і min server memory Хоча управління буферним кешем відбувається автоматично всередині SQL Server, однак адміністратори можуть регулювати максимальний і мінімальний розмір розподіляє пам'яті для цього буфера. Параметр min server memory позначає кордон, нижче якої Buffer Pool НЕ буде на вимогу звільняти зайняту пам'ять. При первинному завантаженні пул не займає пам'ять, зазначену в min server memory. Використовується мінімально необхідний обсяг, який обчислюється автоматично. Розмір пулу при необхідності в подальшому збільшується. EXEC sp_configure 'show advanced option', '1'; --Set the maximum amount of memory to 4096 MB: EXEC sp_configure 'max server memory (MB)', 4096 RECONFIGURE WITH OVERRIDE --Display the newly set configuration: EXEC sp_configure 'max server memory (MB)' --Set 'show advanced options 'back to default: EXEC sp_configure' show advanced options ', 0 RECONFIGURE WITH OVERRIDE





