загальні вимоги до пам'яті для сервера sql 2008 r2


11

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

Обладнання та програмне забезпечення:

База даних: база даних бази даних сервера sql 2008 r2

Windows: Windows 2008 r2 Enterprise 64 біт, майже впевнений, що працює на VMware.

Процесор: процесор Intel (R) Xeon (R) процесор E7-4860 при 2,27 ГГц 2,26 ГГц (2 процесори)

Встановлена ​​пам'ять: 4 Гб

Жорсткий диск для файлів бази даних: 300 Гб

Жорсткий диск для резервного копіювання: 150 Гб

Жорсткий диск для журналів: 100 Гб

Застосування:

У нас є 3 основні бази даних, що містять близько 170 ГБ даних, база даних служб звітування (SSRS) на тому ж сервері, де розміщуються 10 можливостей різних звітів (що містять в середньому по 700 тис. Записів кожного), які генеруються щодня. У нашій базі користувачів близько 20 одночасних користувачів, можливо, 5 з них можна вважати "ресурсомісткими", створюючи великі звіти, що дають інформацію. Більшість користувачів взаємодіють із базою даних через веб-сайт asp.net та веб-сайт сервера звітів. Крім того, наші розробники широко використовують SSIS в BIDS, віддаляючи безпосередньо на сервер (максимум 2 віддалених з'єднання). Нарешті, у нас досить задіяна операція зберігання даних, яка, ймовірно, приносить 3 мільйони записів на день за допомогою пакетів SSIS, які також працюють на сервері.

Поточні проблеми:

У нас хронічні серверні тайм-аути, і час реакції на веб-сайт досить поганий. Я підозрюю, що обсяг пам'яті, який ми маємо (4 Гб), мабуть, є великим вузьким місцем. Наші попередні запити на додаткову пам’ять були відхилені загальною відповіддю, що нам потрібно виконати більше оптимізацій запитів. Хоча ми не є sql профі або (як я впевнений, ви можете сказати нашими налаштуваннями) db адміністрування адміністратора, я хочу переконатися, що я не витрачаю весь свій час, намагаючись витіснити невеликі потенційні показники, якщо апаратне забезпечення є вузьке місце.

Дякую всім за tl; dr уникнення!


7
Вони розраховують обслуговувати 170 ГБ даних із 4 ГБ пам'яті? Жодна настройка запитів це не виправить, і вони поза своїм деревом.
Аарон Бертран

Покажіть їм числа (статистика результатів). Ви також можете показати їм документацію Microsoft, яка показує мінімальний об'єм пам'яті для Window Server 2008 R2, становить 4 ГБ; це не залишає багато для SQL Server.

2
Що показують ваші статистики очікування? Я підозрюю, що ви бачите багато PAGEIOLATCH_XX ваших запитів. Якщо ви є, ви можете використати це як доказ того, що якась додаткова пам'ять буде корисною.
SQLRockstar

2
І коли у вас є пам'ять, ви можете почати працювати над кращою підсистемою вводу-виводу. Жорсткий диск для добре використовуваної бази даних - це жарт IOPS. ТО повинні бути ДОРОГИ. Ви не купуєте диск як ємність, для баз даних ви купуєте диск як джерело IOPS. Що означає, 512 Гб SSD було б добре для файлів бази даних. Стандартний "дозволяє отримати його великим і дешевим" вбиває базу даних.
TomTom

@TomTom Я впевнений (я сподіваюся), що у нас є рейдовий масив. Я не впевнений, як це виявити. Я тільки грунтувався на описі жорсткого диска на тому, що було показано Провідником вікон Комп'ютера на сервері Windows.
RMuesi

Відповіді:


14

... сподівався, що я можу отримати ... грубу грубу оцінку того, що нам слід працювати.

Без додаткової інформації про ваші запити та розміри даних, важко дати вам будь-яку оцінку, не кажучи вже про точну оцінку.

База даних: база даних бази даних сервера sql 2008 r2

Windows: Windows 2008 r2 Enterprise 64 біт, майже впевнений, що працює на VMware.

Процесор: процесор Intel (R) Xeon (R) процесор E7-4860 при 2,27 ГГц 2,26 ГГц (2 процесори)

Встановлена ​​пам'ять: 4 Гб

Два процесори (я припускаю, що це випромінюється у ВМ як 2 ядра), можливо, можуть бути недооцінені. Сердечники, призначені для VM, не обов'язково відображаються безпосередньо у фізичні ядра (або навіть дозволяється використовувати 100% одного ядра, коли це потрібно!), Тому ви можете виявити, що це більш гнучкий ресурс, ніж пам'ять. Без додаткової інформації про ваше навантаження або конфігурацію обладнання та віртуалізації я б сказав, що збільшення цього до 4 було б непоганим.

Розподіл пам'яті. О, малюк. Це суттєво недостатньо для навантаження. Для самої Windows потрібен мінімум 2-3 ГБ, щоб залишатися щасливим, а кожному з 2-х користувачів, які працюють на коробці, буде потрібно щонайменше 500 Мб. І з цим ящик вже максується, і я навіть не почав розбиратися, скільки потрібна база даних .

Більшість користувачів взаємодіють із базою даних через веб-сайт asp.net та веб-сайт сервера звітів.

Ви не сказали, але якщо вони працюють в одному і тому ж полі, потрібно також враховувати вимоги до пам'яті.

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

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

Наші попередні запити на додаткову пам’ять були відхилені загальною відповіддю, що нам потрібно виконати більше оптимізацій запитів.

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

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

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

Ось кілька думок (у порядку нападу):

  • Ви виграєте, якщо зможете довести, наскільки ефективність покращується щоразу, коли ви отримуєте більше ресурсів. Слідкуйте за показниками ефективності, використовуючи журнал монітора продуктивності (зверніть увагу: частина журналу дуже важлива), включаючи час відгуку веб-сайту, якщо можете. Почніть це робити зараз , перш ніж робити щось інше. Коли ви нарешті доберетеся до мінімального обсягу пам'яті (не збираєтесь отримати 32 ГБ відразу), раптом у вас з’явилися докази того, що додана пам'ять покращила речі ... а це означає, що додавання ще більше , ймовірно, допоможе! Якщо ви не збираєте базову лінію за поточною конфігурацією, ви будете пропускати човен, коли речі стикаються до мінімально рекомендованого рівня.

  • Проаналізуйте статистику очікування вашого сервера . Це підкаже, яке найбільше вузьке місце в системі. Напевно, у вас буде PAGEIOLATCH_XXнайпоширеніший / найвищий час очікування, що вказує на занадто багато вводу-виводу, що робиться для отримання сторінок з диска. Це можна полегшити, додавши пам'ять, тому фізичні введення / виведення стають рідше, оскільки необхідні дані вже є в пам'яті. Незважаючи на те, що цей аналіз в значній мірі заздалегідь закінчений, той факт, що ви зібрали ці статистичні дані, дає вам більше патронів під час виправдання потреби в ресурсах.

  • Як я вже згадував вище, мінімальна вимога до пам'яті не виконується. Зберіть набір рекомендованих апаратних вимог для всього програмного забезпечення, яке ви працюєте, а також, можливо, також зніміть скріншоти Диспетчера завдань. Одного лише цього повинно бути достатньо, щоб виправдати принаймні на 4-8 ГБ більше на місці. Якщо вони все-таки відмовляться, спробуйте переконати їх, щоб вони дозволили спробувати це протягом тижня, і поверніть його після цього (ви збираєте статистику результативності, тому вам не потрібно буде повертати її назад, тому що ви середині тижня ' Я зможу довести, наскільки це покращило ситуацію). Якщо вони все-таки відмовляться, ви налаштовані на збій; URLT .

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

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

  • Оскільки у вас працює SQL Server Enterprise Edition, а пам’ять переважає, я б настійно розглядав можливість стиснення даних . Це дозволить знизити збільшення використання процесора для економії простору пам’яті (а отже, зменшення доступу до диска, який порівняно дуже повільний).

  • Налаштуйте базу даних. Ймовірно, структури та запити можуть використовувати поліпшення, що стосується індексування та моделей доступу. Також, якщо часто сканується та агрегується багато даних, створення індексованих подань, зведених таблиць або попередньо обчислених звітів може бути дуже корисним.

  • Це може бути довгим оглядом, оскільки це, ймовірно, означає більше апаратного забезпечення, але реалізувати рішення кешування. Найшвидший запит - це той, який ти ніколи не робиш .

Це лише кілька ідей. Суть полягає в тому, що тільки налаштування не вирішить тут проблем, а також не лише апаратне забезпечення, хоча остання, ймовірно, полегшить більшість негайних проблем. Це дійсно так: киньте обладнання на вирішення проблеми в короткостроковому періоді, щоб погасити пожежу, і надовго киньте налаштування проблеми, щоб виправити першопричину якнайкраще.


1
Джон, я люблю вашу відповідь та +1, але в цьому сценарії, здається, коментар Аарона вдарив його по голові, і їм просто потрібно більше оперативної пам’яті, незалежно від того, наскільки вони намагаються її налаштувати.
Алі Разегі

2
@Ali: Так, я погоджуюсь, і це я згадував у своїй відповіді. В основному я хотів зосередитись на стратегіях, щоб отримати більше оперативної пам’яті, тому що тут, здається, проблема. (Якщо його просто немає , це окреме питання.)
Джон Сейгель,

Дуже дякую за детальну відповідь! Я новачок у налаштуванні db настройки, тому я просто намагаюся зрозуміти, з чого почати. У мене трохи матеріалів для читання та Монітора продуктивності, тепер я просто зрозумів показники. Але ваші пропозиції дають хорошу дорожню карту для вирішення цієї проблеми. Знову дякую.
RMuesi

@RMuesi: Вас дуже вітають. Якщо у вас виникнуть конкретні запитання щодо того, як виконати те, що вам потрібно зробити, сміливо опублікуйте їх (звичайно, будь ласка, пошукайте спочатку), і громада буде рада допомогти.
Джон Сейгель

9

Це божевілля "лічильника рахунків". $ 1100 - $ 2500, які ви витратили на оперативну пам'ять, могли б окупитися за тиждень !

Вони отримують тайм-аути для 20 працівників, і 5 з них проводять «ресурсоємну» роботу. Я думаю, що їх час недешевий, і деякі з цих звітів - це те, що хотів би, щоб начальник не підписувався на зарплату. Це багато витрачених даремно повторних передач і боротьба з розладом.

Поясніть їм, що вони, ймовірно, шукають $ 15 - $ 20 за ГБ оперативної пам’яті. 128 Гб оперативної пам’яті коштуватиме приблизно 2200– 2500 доларів зараз, а ціни на оперативну пам’ять зараз трохи подорожчали. Навіть якщо материнська плата ваших серверів не може її підтримувати (це було б дивно), 64GB буде коштувати від 1100 до 1200 доларів (я тільки перевірив, і це якість серверного барана від Dell, не застосовуючи знижок). Навіть навіть 64 ГБ оперативної пам’яті може зробити ВЕЛИЧЕЗНУ різницю (якщо ми не забудемо уникнути сканування великих таблиць).

З'ясуйте, скільки витрачається часу, і запитайте, чи коштує він $ 1100 - $ 2500. Якщо ви витрачаєте лише 1100 доларів і отримуєте 64 ГБ оперативної пам’яті, не забудьте уникнути сканування столів на великих столах. Використовуйте більше диска з індексами (якщо у вас є затримка для його підтримки), щоб уникнути великого сканування пам’яті.


5
Добре сказано за божевілля. Пам'ять на 4 Гб менше, ніж я б запропонував сьогодні для робочого столу. І це зараз намагається запустити в середовищі бази даних 170 Гб. Проклятий жарт. Але ей, віртуалізація для beancounters означає, що ви можете позбутися великих дорогих серверів;)
TomTom

2
Повністю згоден. Принаймні лічильники бобів в сценаріїв ОП
відбили

1
Повір в це. Я не. TYPICAL був би сервер з великою кількістю оперативної пам’яті та - LAAAAARGE дешевими дисками. Таким чином, ви можете запустити багато віртуальних машин на них. Зрештою, оперативна пам'ять, як правило, є обмежуючим фактором, чи не так;)? Результатом буде чудова продуктивність IOPS - навіть без бази даних. Був там, бачив це. 64 Гб пам’яті, дзеркала 2 Тб SATA диск;)
TomTom

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

2
Ви можете просто повідомити їм, що SQL Server - це двигун бази даних пам'яті. Читання з диска, навіть SSD (що я впевнений, що цей магазин не використовує) болісно повільне. Читання оперативної пам'яті займає близько 5н. Покажіть їм план виконання за допомогою SET STATISTICSIO ON, який показує сканування таблиці та зчитування. Покажіть їм фізичне читання та логічне зчитування. Фізичне ведеться з диска.
Алі Разегі

-1

У мене працює 2008 R2 з 46 Гб оперативної пам’яті. Ніяких віртуальних машин. SQL Server 2008.

Бази даних - близько 300 ГБ.

Нещодавно я поставив бази даних на твердотільний накопичувач і втричі вивів дані.

На даний момент сервер використовує 45 Гб оперативної пам’яті та працює добре.

FC Sata Raids та SAS SCSI Raids. 26 логічних дисків усього. 144 Спінінг-диски.

Вчора я використовував лише 24 ГБ оперативної пам’яті, коли у мене було лише 50 ТБ повних жорстких дисків, підключених та переданих даних. Сьогодні у мене 160 ТБ повних жорстких дисків і я використовую 45 ГБ оперативної пам’яті.

У моїй програмі не використовується більше 400 Мб оперативної пам’яті.

Я б підозрював, що вам потрібні бази даних на швидкому твердотільному диску або оперативному накопичувачі. В основному, хоча вам потрібно набагато більше барана.


IBM exFlash 400GB MCS $ 4400. Ось куди я йду.
Девід
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.