Параметри конфігурації – ЧАСТИНА 2

Різні екземпляри SQL Server конкурують один з одним, коли їм потрібна память У серверах з кількома розгорнутими екземплярами SQL Server висока ймовірність того, що два особливо завантажених примірника почнуть війну за ресурси, в результаті якої один з

них залишиться обділеним памяттю Зменшення максимального обсягу памяті в кожному з примірників допоможе уникнути подібних ситуацій

У програмному коді Т-SQL параметри мінімального і максимального обсягів памяті встановлюються за допомогою системної збереженої процедури sp_conf igure Цей параметр належить до групи додаткових, тому може використовуватися тільки в тому випадку, коли включений параметр сервера show advanced options:

Ехес sp_configure show advanced options, 1 EXEC sp_configure min server memory, 16

Буде отримано наступний результат:

Configuration option min server memory (MB) changed from 0 to 16

Run the RECONFIGURE statement to install

Аналогічно встановлюється і параметр максимального обєму памяті:

Ехес sp_configure max server memory, 128 Буде отримано наступний результат:

Configuration option max server memory (MB) changed from 128 to 128

Run the RECONFIGURE statement to install

Для автоматизації обчислення максимального обсягу памяті на основі обсягу фізичної памяті створена наступна збережена процедура У ній аналізується набір даних, що повертається збереженої процедурою xp_msver, і на основі знайденого в ньому обсягу фізичної памяті обчислюється значення, яке потім передається процедурі sp_conf igure для установки параметра:

CREATE PROC pSetMaxMemory (

@ Safе INT = 64)

AS

CREATE TABLE #PhysicalMemory (

[Index] INT,

[Name] VARCHAR(50),

[Internal_Value] INT,

[Character_Value] VARCHAR(50) )

DECLARE @Memory INT INSERT #PhysicalMemory

EXEC xp_msver 1PhysicalMemory

SELECT @Memory =

(Select Internal_Value FROM #PhysicalMemory) – @safe EXEC sp_configure max server memory, @Memory RECONFIGURE

go

EXEC pSetMaxMemory – установка макс обсягу памяті – 64Mb Ехес pSetMaxMemory 32 – установка макс обсягу памяті – 32МЬ

Команда reconfigure

Після того, як параметри конфігурації були змінені за допомогою збереженої процедури sp_conf igure, для того, щоб вони вступили в силу, потрібно виконати команду RECONFIGURE Якщо цього не зробити, в поле conf ig_value буде відображатися змінений варіант значення, проте зміни не торкнуться поле run_value, навіть якщо перезавантажити службу У той же час деякі параметри для свого вступу в силу вимагають перезапуску SQL Server:

The command(s) completed successfully

Замість динамічного споживання памяті SQL Server можна конфігурувати так, щоб у операційної системи негайно вимагалось виділення фіксованого обсягу памяті Щоб встановити фіксований обсяг памяті з програмного коду, потрібно задати для параметрів мінімального і максимального обсягів памяті одне і те ж значення

Незважаючи на гадану додаткове навантаження, що спричинюється обчисленням необхідного обсягу памяті, опитуванням середовища і запитом до операційної системи, на практиці ви не відчуєте жодних відмінностей у продуктивності системи при перемиканні між динамічним і фіксованим виділенням памяті Основною метою виділення фіксованого обсягу памяті є конфігурування виділеного компютера SQL Server, не допускає підкачування сторінок При цьому настройку фіксованого памяті потрібно обєднати з рядом інших параметрів, про які ми поговоримо трохи пізніше

Незалежно від обсягу памяті, що виділяється операційною системою сервера баз даних, диспетчер памяті Windows може вивантажити деякі сторінки SQL Server в файл підкачки, якщо SQL Server простоює Якщо в настройках SQL Server встановлений фіксований обсяг памяті, то такого вивантаження можна уникнути, якщо встановити в параметрі Reserve Physical Memory значення true

Параметр SQL Server Reserve Physical Memory можна встановити програмним шляхом за допомогою передачі системної збереженої процедурою sp_conf igure аргументу set working set size:

EXEC sp_configure set working set size, 1 RECONFIGURE

Щоб дана настройка вступила в силу, сервер баз даних потрібно перевантажити

Часом команда розробників SQL Server вражає мене деталізацією елементів управління базою даних, які передаються в руки адміністратора При необхідності SQL Server може виділяти кожному виконуваному запиту заданий обсяг памяті Параметр min memory per query дозволяє встановити мінімальний обсяг памяті, що використовується кожним запитом Незважаючи на те що збільшення значення цього параметра щодо виділяються за замовчуванням 1 Мбайт може забезпечити певне підвищення продуктивності деяких запитів, я не бачу підстав замінювати автоматичне керування памяттю сервером і тим самим піддаватися ризику браку памяті У наступному прикладі мінімальний обсяг памяті, що виділяється для запитів, підвищується до 2 Мбайт:

EXEС sp_configure min memory per query, 2048 RECONFIGURE

Шість додаткових параметрів конфігурування памяті не доступні в інтерфейсі Management Studio, але можуть бути встановлені за допомогою програмного коду

Час очікування запиту

Якщо доступної памяті недостатньо для виконання великого запиту, SQL Server може почекати, поки не звільниться потрібний обсяг, протягом 25-кратного оціночного часу виконання запиту Якщо протягом цього проміжку часу потрібний обсяг памяті так і не звільниться, запит завершиться помилкою перевищення часу очікування У ході очікування всі блокування запиту зберігаються, що збільшує ймовірність виникнення взаімоблокіровок Якщо ви зіткнулися саме з такою ситуацією, слід закласти в програмний код граничний час очікування виділення ресурсів памяті в секундах, як у наступному прикладі:

EXEC sp_configure query wait, 20 RECONFIGURE

У наведеному прикладі визначено, що виконання запиту або повинне початися протягом 20 секунд, або завершитися помилкою перевищення часу очікування

Розширення вікна адресації памяті (AWE)

За звичайних умов СУБД SQL Server обмежена стандартним граничним обсягом фізичної памяті в 3 Гбайт Водночас редакція SQL Server 2005 Enterprise Edition, запущена в середовищі Windows 2005 Datacenter, може оперувати 64 Гбайт фізичної памяті за допомогою API-інтерфейсу розширення вікна адресації AWE Параметр AWE Enabled дозволяє включити в SQL Server AWE-адресацію памяті:

Ехес sp_configure AWE Enabled, 2 0 RECONFIGURE

Виділення памяті для формування індексів

Обєм памяті, який використовує SQL Server для виконання сортування при створенні індексів, звичайно конфігурується автоматично Водночас цим обсягом можна управляти і вручну, використовуючи збережену процедуру sp_conf igure і встановлюючи потрібне значення в кілобайтах У наступному прикладі память, що виділяється для створення індексу, визначається в розмірі 8 Мбайт:

Ехес sp_configure index create memory, 8096 RECONFIGURE

I Для перегляду поточних операцій введення-виведення і блокувань в кожному поділу-SVS ле таблиЦЬ | або індексу бази даних виберіть у динамічному представле-I * нии управління sysdm_db_index_operational_stats Статистику викорис-

‘Тання індексів можна побачити за допомогою sysdm_db_index_usage_stats,

а фізичні деталі, такі як статистика розмірів і фрагментації, – за допомогою sysdm_db_index_physical_stats

Резервування памяті для блокувань

Зайві блокування можуть у буквальному сенсі поставити SQL Server на коліна, як щодо очікування блокувань, так і щодо памяті, споживаної блокуваннями (одна блокування використовує 96 байт памяті) За замовчуванням SQL Server резервує для блокувань 2% відведеної для нього памяті У процесі роботи це значення може бути динамічно збільшено аж до 40% визначеного в параметрах сервера максимального обсягу памяті Найчастіше цього більш ніж достатньо Якщо ви отримали повідомлення про помилку, повязаної з нестачею памяті для блокувань, не поспішайте збільшувати виділення для блокувань памяті – в даному випадку проблема, швидше за все, повязана з помилками в програмному коді У наступному прикладі відключається динамічне виділення памяті для блокувань, при цьому їм відводиться фіксований обсяг памяті для 16767 блокувань (приблизно 1,5 Мбайт): Ехес sp_configure locks, 16767 RECONFIGURE

Максимальна кількість відкритих обєктів

SQL Server віддає перевагу динамічному управління своєю памяттю, включаючи пул, використовуваний для відстеження обєктів, відкритих в поточний момент (таблиць, уявлень, правил, процедур, що зберігаються, значний за замовчуванням і тригерів) Кожен обєкт являє собою одну одиницю виділення памяті, навіть якщо посилання на нього виконується багаторазово SQL Server повторно використовує простір памяті в пулі обєкта, проте одного разу сервер може поскаржитися, що кількість відкритих обєктів перевищила встановлену межу У цьому випадку параметр максимальної кількості відкритих обєктів слід збільшити вручну У наступному прикладі це кількість збільшено до 16 767 обєктів:

EXEC sp_configure open objects, 16767 RECONFIGURE

I Ви завжди можете дізнатися мінімальне і максимальне значення конкретного SVS параметра, якщо запустите на виконання збережену процедуру sp_conf igure

1 I * з вказівка ​​імені параметра, але без зазначення його значення Наприклад, якщо ви

* Виконайте команду EXEC sp_configure open objects, то дізнаєтеся, що

значення параметра open objects має перебувати в діапазоні від о до

2&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 147 483 647

Параметри конфігурації процесора

Параметри конфігурації процесора (табл 343) керують використанням симетричних багатопроцесорних систем в SQL Server

Таблиця 343 Властивості конфігурації процесора

Параметр

Рівень

Графічний інтерфейс установки

Програмна установка

Призначення потоків процесорам

Сервер

Management Studio

EXEC sp configure affinity mask

Максимальна кількість робочих потоків

Сервер

Management Studio

EXEC sp_configure max worker threads

Підвищення пріоритету SQL Server в Windows

Сервер

Management Studio

EXEC sp_configure priority boost

Використання волокон Windows NT

Сервер

Management Studio

EXEC sp_configure lightweight pooling

Кількість процесорів, що використовуються для паралельного виконання запитів

Сервер

Management Studio

EXEC sp_conf igure max degree of parallelsm

Мінімальна вартість запиту для його поділу на паралельні процеси

Сервер

Management Studio

EXEC sp_configure cost threshold for parallelism

Час очікування запиту

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*