Чи відповідає ефективність процесора для сервера баз даних?


33

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

  1. Балансир навантаження,
  2. Кілька / масштабовані сервери додатків
  3. (Єдиний) сервер баз даних (на даний момент)

У двох перших частинах я знаю, на що звернути увагу. А як щодо сервера баз даних? Яке обладнання потрібно шукати?

  • Чи відповідає частота процесора для сервера баз даних?
  • Чи актуальні декілька основних процесорів?
  • Чи важливіша оперативна пам'ять, ніж процесор?

PS: Припустимо, що обрана база даних є MySQL або PostgreSQL.


Відповіді:


29

Для PostgreSQL потужність процесора може бути дуже актуальною, особливо якщо досить великий відсоток активного робочого набору ваших даних вписується в оперативну пам'ять. Більшість баз даних, з якими я працював, мали більшу частину часу потужність процесора. (Я щойно перевірив vmstat на сервері, на якому розміщені веб-сайти з мільйонами звернень на день, розміщуючи понад 5 ТБ простору бази даних, і я ніколи не бачив більше 2% часу очікування диска, але побачив пік 12% часу процесора користувача.)

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

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

Для отримання більш докладної інформації по цій темі , як вона ставиться до PostgreSQL, я не думаю , що це найкращий джерело , ніж PostgreSQL 9.0 High Performance по Грег Сміт . (Повне розкриття, я був технічним рецензентам на книгу, але не отримував фінансової вигоди на основі продажів.)


Гей, у мене є книга. Чи є якась сторінка, розділ чи глава, про які ви посилаєтесь ??? (BTW +1 для перспективи PostgreSQL)
RolandoMySQLDBA

Дякуємо за інформацію про PostgreSQL. Я перевірю книгу. ;)
Zenklys

1
Хороші речі зі сторінок 21-23
RolandoMySQLDBA

Я бачу мудрість вашого другого абзацу порівняно зі сторінками 21-23.
RolandoMySQLDBA

23

Суворо з точки зору MySQL, це дуже завантажене питання

Частота процесора, релевантна для сервера баз даних?

Хоча швидший процесор і материнська плата чудові, інші вузькі місця можуть заважати. Такі вузькі місця включають:

  • Дисковий ввід / вивід
  • Підключення Максимуми
  • Затримка мережі
  • Ефективність запиту за з'єднання

Кожна невелика перевага допомагає, але я повинен сказати « Ні», оскільки швидкість процесора сама по собі не покращується у вищезгаданих вузьких місцях. Зрештою, що корисного може зробити RaceCar Formula One у відкритому парашуті чи з 800 фунтами горили за кермом?

Чи актуальні декілька основних процесорів?

Це повністю залежить від того, яку версію MySQL ви використовуєте. Плагін MySQL 5.1 InnoDB, MySQL 5.5 та XtraDB сервера Percona Server мають налаштування, ЩО ВАМ ПОВИНЕН КОНФІГУРОВАТИ, щоб отримати InnoDB для доступу до всіх ядер. Справжній стимул для цього випливає з того, що деякі старіші версії MySQL LEFT UNCONFIGURED швидші, ніж новіші версії, як я обговорював у своїх попередніх публікаціях:

Тому, якщо ви не готові налаштувати InnoDB на доступ до всіх процесорів, наявність декількох ядер купує вам абсолютно нічого .

Чи важливіша оперативна пам'ять, ніж процесор?

О, так справді. Конфігурація пам'яті для MySQL тягне за собою налаштування

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


2
Чудова відповідь. Я збираюся перевірити всі ці посилання, дякую.
Zenklys

6
  • Ні
  • Ні
  • Так

Простіше кажучи, вам потрібна продуктивність оперативної пам’яті та IO (затримка + швидкість читання + швидкість запису) для баз даних.

Вибір 4 або 6 ядер або 2,5 ГГц проти 3 ГГц не дуже важливий (я припускаю, що вам не доведеться вибирати між P3-450 з 32 ГБ оперативної пам’яті або останнім Xeon з 1 ГБ ОЗУ).

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


Дякую, за відповідь. SSD - це тоді гарний вибір? Над потужністю процесора?
Zenklys

@Zenklys: важко сказати. Який розмір бази даних у вас є? Написати гучність? Читати завантаження? OLTP або OLAP? тощо
gbn

20–30 гбіт максимум. Коефіцієнт читання / запису 10 на 1, лише невеликі дані, OLTP.
Zenklys

2
@Zenklys: У цьому випадку це насправді не має значення. Просто придбайте оперативну пам’ять спеціально для MySQL, щоб якомога більше даних було кешовано
gbn

3
Не впевнений, чому це прийнята відповідь. Це спрощено, оскільки він не враховує додаток, робоче навантаження чи розмір набору даних. @kgrittn дав кращу відповідь, що ґрунтується на реальному світовому досвіді, і краще розуміє теорію роботи для Postgres.
dbenhur
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.