Чому SQL Server споживає більше пам’яті сервера?


36

SQL Server споживає 87,5% оперативної пам'яті мого сервера. Це нещодавно спричинило багато вузьких місць, таких як повільність. Я досліджував це питання. Одне поширене рішення, яке я можу знайти в Інтернеті, - це встановити максимальний ліміт для SQL Server. Це було зроблено і значно покращено. Я хочу знати, чому якщо не встановлено максимальне значення пам’яті, чому SQL Server продовжує витрачати ресурси


3
Як ви визначили, що використання оперативної пам’яті SQL Server є джерелом будь-якого вузького місця? Повільність у чому? Якщо що-небудь, SQL Server повинен бути ефективнішим, якщо він використовує якомога більше оперативної пам’яті (або навіть більше, ніж ви очікуєте чи хочете). А якщо на сервері є інші програми, які страждають через те, що SQL Server використовує пам'ять (як це було призначено), перемістіть їх на інший сервер .
Аарон Бертран

Я тут використав цей метод lucidica.com/help/got-sql-eating-up-ram Повідомте мене, чи допомогло це :) Добре з повагою, Микіта.
Микита Косусов

Відповіді:


48

SQL Server буде споживати стільки пам'яті, скільки ви дозволите . За замовчуванням це число охоплювало б 100% вашої цифрової пам'яті на вашій машині. Ось чому ви бачите те, що бачите. Якщо ви даєте SQL Server 24 ГБ пам'яті, то SQL Server зробить все можливе, щоб використовувати 24 ГБ пам'яті. Тоді у вас є SQL Server і ОС, які борються за ресурси, і це завжди призведе до низької продуктивності.

Під час встановлення max server memoryліміту конфігурації ви обмежуєте, скільки SQL Server може виділити для буферного пулу (практично там, де він зберігає сторінки даних та кеш процедур). Є й інші службовці пам'яті в SQL Server, тому для вашої конкретної версії (2008 R2 і вище) max server memoryпросто керуйте буферним пулом. Але це завжди буде найбільшим споживачем пам'яті.

Довідка TechNet про вплив мінімальної та максимальної пам'яті сервера

Параметри конфігурації пам’яті min та максимальної пам'яті сервера встановлюють верхню та нижню межі обсягу пам’яті, використовуваного буферним пулом бази даних Microsoft SQL Server.

Що стосується питання, скільки пам’яті потрібно залишити для ОС , то це загальноприйнятий показник. Це дійсно все залежить, головним чином від того, які інші процеси працюють на сервері . За умови, що це справді виділений сервер (і це майже ніколи не буває). Мені подобається бачити принаймні 4 Гб оперативної пам’яті для ОС (і навіть більше на великих апаратних коробках). Але найголовніше, стежте за тим, скільки є невикористаної пам'яті. Будьте ліберальні та надайте SQL Server більше пам’яті, якщо ви помітили багато доступної (можна контролювати через perfmon) та невикористаної пам’яті (звичайно, завжди залишаючи невеликий буфер для цих кутових ситуацій).


11

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

Зазвичай я рекомендую людям залишити близько 4 гігів оперативної пам’яті для Windows, але це дійсно залежить від кількості програмного забезпечення, що працює на сервері, які компоненти SQL Server ви використовуєте (не всі компоненти дотримуються цього налаштування) тощо.


6

Це працює миттєво без необхідності перезавантаження SQL:

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

Використовуйте два варіанти пам’яті сервера, мінімальну пам’ять сервера та максимальну пам’ять сервера , щоб перенастроїти об’єм пам’яті (в мегабайти), керований менеджером пам’яті SQL Server для екземпляра SQL Server. За замовчуванням SQL Server може динамічно змінювати свої вимоги до пам'яті на основі наявних системних ресурсів.

Порядок налаштування фіксованого обсягу пам'яті Щоб встановити фіксований об'єм пам'яті:

  1. У Провіднику об’єктів клацніть правою кнопкою миші сервер і виберіть Властивості.
  2. Клацніть вузол пам'яті.
  3. У розділі Параметри пам’яті сервера введіть необхідну кількість для мінімальної пам’яті сервера та максимальної пам’яті сервера.

Використовуйте налаштування за замовчуванням, щоб дозволити SQL Server динамічно змінювати свої вимоги до пам'яті на основі наявних системних ресурсів. Значення за замовчуванням для мінімальної пам'яті сервера - 0, а для макс. Пам'яті сервера - 2147483647 мегабайт (МБ).

Я сподіваюся, що це допомагає!


3

Як сказав Ерік, вам потрібно керувати пам'яттю, щоб зберегти вільний простір для інших процесів. Щоб отримати загальне пояснення та деякі вказівки щодо встановлення максимальної пам'яті, перегляньте публікацію Джонатана Кехаяса:

http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/

Ви можете змінити рекомендацію, враховуючи використання вашого сервера.


1

SQL Server використовуватиме доступну оперативну пам’ять, якщо ви не встановите обмеження на використання. Як правило, я намагаюся залишити для ОС не менше 2 Гб, тобто якщо у вас хост 64 Гб фізичної оперативної пам’яті, обмежте SQL Server @ 62 Гб.

http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx

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