Як збалансувати пам'ять SQL Server із пам'яттю служб аналізу SQL Server


11

У нас багато систем, що мають однакову конфігурацію

  • Один сервер (віртуальний або фізичний)
  • Запуск SQL Server (SQL) та сервера аналізу SQL Server (AS)
  • кілька ядер
  • 16 Гб оперативної пам’яті

Щовечора SQL Server буде обробляти приблизно 2-3 години, після чого - 2-3 години обробки AS. Потім протягом дня запитуються лише АС.

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

Причина запитати: якщо я не встановлю обмеження для SQL, він захопить всю пам'ять, яку він може. Однак я розумію, що SQL із задоволенням відмовиться від цієї пам'яті, якщо:

  • Це не використовується і

  • Інша послуга / програма вимагає цього.

Отже, з логічної точки зору я вважаю, що дозволяю SQL приймати стільки, скільки потрібно, але я не дуже впевнений в AS TotalMemoryLimit. Я не впевнений, чи AS відмовиться від пам'яті. Насправді читання більше змушує мене вважати, що неправильно дозволяти йому все це приймати.

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

Сподіваюся, це має сенс.

Відповіді:


9

Я думаю, що цілком можливо змусити руки обох служб мати заплановане завдання або службу, яка:

(a) перед нічною обробкою SQL Server, вимикає службу SSAS та збільшує пам'ять, виділену SQL Server

(b) після того, як SQL Server здійснив обробку, зменшує максимальну пам'ять сервера та перезапускає SQL Server

(c) запускає SSAS

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

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


Я думаю, що, можливо, нам слід перезапустити SQL і після обробки SASS - оскільки він має велике зчитування (сховище даних).
Преет Сангха

Насправді замислюючись про це - чи не вплине перезапуск SQL-сервера на всю обробку SQL?
Преет Сангха

1
@Preet так, чи не в цьому справа?
Аарон Бертран

7

Чи потрібно коли-небудь запускати SQL і SSAS одночасно? Якщо ні, то ви впевнені на 100%?

Я хотів би розглянути налаштування пам'яті для SQL і SSAS, щоб побачити, чи можуть вони співпрацювати один з одним.

Нам потрібно буде залишити деяку пам’ять для ОС, інших процесів та багатосторінкових розподілів. Можливо, 4G?

Спробуйте щось подібне ...

На стороні SQL встановіть для Максимальної пам’яті сервера 12G, а Міні-сервера - 6G.

На стороні SSAS встановіть TotalMemoryLimit 12G, а LowMemoryLimit - 6G.

Також не вмикайте Блокування сторінок у пам'яті.

Спробуйте кілька ітерацій, регулюючи ці числа вгору або вниз.

Якщо це просто не працює, і ви знаєте, фактично SQL і SSAS не потрібно запускати одночасно, то я б спробував запропонувати Аарону планувати завдання, щоб вимкнути і ввімкнути служби.

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