Максимальний параметр пам'яті в SQL Server


11

Я запускаю SQL Server 2008 та веб-додаток на одному виділеному сервері, маючи лише 2 Гб пам'яті.

Як зазначається в іншому місці, SQL Server регулярно займає до 98% фізичної пам'яті, що, як видається, уповільнює роботу веб-додатків на сервері.

У розділі "Властивості сервера" в SSMS у розділі "Пам'ять" встановлено максимальну пам'ять сервера (в Мб): 2147483647 Сервер Sql

Моє запитання: що було б рекомендоване число, яке слід ввести у поле максимальної пам’яті сервера, враховуючи об’єм пам’яті, який я маю, і що той самий сервер також працює за допомогою веб-програми?

Крім того, чи безпечно вносити зміни до цього числа під час роботи SQL Server?

Дякую за вашу пораду.


2
Недавня стаття, яку я писав про перевиконання пам'яті на SQL серверах, може бути корисною для вас для читання.
Джон Сейгель

Відповіді:


13

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

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

На цій сторінці див. Докладнішу інформацію про налаштування пам'яті на SQL-сервері.


Ваше перше запитання, на жаль, відповідь: я не можу вам сказати, я не там.

Є 1 000 000 речей, які потрібно враховувати при розподілі пам'яті. Наскільки великі набори результатів від запитів, як часто вони виконуються, чи буде запит, який раніше тривав 20 мс, нормальний, а тепер займає 200 мс?

За замовчуванням Sql передбачається, що це єдине, що працює на сервері, тому він просто встановлює пам'ять на MAX_VALUE і він припиняє зростати, коли використовується вся наявна пам'ять (і на спеціальному апаратному забезпеченні, яке досить близько до того, що ви хочете статися (див. Аарони коментують можливий застереження)). Зазвичай будь-який веб-сервер або інше програмне забезпечення, що взаємодіє з базою даних, має інше обладнання, яке спілкується з ним по мережі.

Вам дійсно потрібно просто встановити його на значення, яке, на вашу думку, є здоровим, і якщо ваш веб-сервер все ще задушений, знизьте його. Якщо SQL не дає вам достатньої продуктивності після того, як ви надаєте веб-серверу потрібної йому пам’яті, вам потрібно буде або придбати більше оперативної пам’яті, або перемістити SQL на спеціальне обладнання.


2
Є хороший звіт у SSMS про пам'ять сервера SQL: blogs.msdn.com/b/buckwoody/archive/2007/10/17/… Ви можете відстежити, яка частина споживає найбільше пам’яті
DiGi

1

Ви ніколи не повинні дозволити серверу sql забирати всю пам'ять у коробці. Це залежить від того, що працює в цій коробці і скільки пам'яті має ящик, але я завжди переконуюсь, що я залишаю 10% пам'яті для O \ S.


0

У моїй теперішній компанії, де мене наймають, я завжди використовую мінімальні та максимальні налаштування для SQL Server. Максимум, якщо сервер використовується тільки для SQL Server, я завжди встановлюю в пам'яті MAX - 1 гб для ОС. Мінімум у нашому випадку - 2 ГБ.

Але це доведено для наших установок. Не кожна установка та використання однакові, і я все ще відчуваю, що пам'ять завжди не робить те, що хочеться;)

У вашому випадку це може бути відомою справою, але також подивіться на обмін пам'яті. Якщо на сервері у вас є лише 2 Гб, і ОС і SQL Server працюють на "високому навантаженні", споживання пам'яті стає надто великим, коли ОС, як правило, робить деякий обмін. Переконайтесь, що ваші файли підкачки не знаходяться на дисководі ОС, інакше у вас може бути повністю заклинена система (була там раніше і не сподобалась)


-1

Я просто змінив "макс. Серверну пам'ять" на живому сервері без проблем. Схоже, він встановлений як 2147483647 за замовчуванням у всіх базах даних (але я не знаю, як насправді прочитати це значення з SQL перед зміною) ...


-2

Дотримуйтесь за замовчуванням у 99% випадків. Це дозволить динамічно керувати пам'яттю.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.