SQL Server 2K / 2K5 / 2K8 і твердотілі диски: специфічна оптимізація?


9

Хтось тут працює з SQL Server на твердотільних накопичувачах? Ви знайшли якісь конкретні поради щодо оптимізації? Мене конкретно цікавлять способи зменшення частоти, з якою SQL Server виконує невеликі операції з випадковим записом, оскільки вони є враженням продуктивності SSD, зокрема дисками MLC SSD.

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

Зважаючи на достатній бюджет, звичайно, хочеться використовувати SLC-диски SSD, такі як X25-E або серія Vertex Ex або різні пропозиції на рівні підприємств. Але мене також цікавлять поради, які можуть принести користь настройкам MLC SSD. Я думаю, що це цікава область. Один з клієнтів моїх клієнтів має невеликий бюджет і набір даних, який зростає неабияк, і вони стикаються з повним переписом близько ста запитів, щоб підтримувати гідний рівень продуктивності. Однак у мене є підозрілість, що менше 500 доларів оперативної пам’яті та місця на SSD можуть принести їм більший приріст продуктивності, ніж тисячі (можливо, десятки тисяч) доларів, що варті часу розробника.

Відповіді:


3

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

У всіх реалізаціях SSD, які я бачив (декілька), це щось протилежне тому, що ви пропонуєте - найкраще використання SSD-дисків, здається, для запису великих журналів транзакцій і tempdb - в основному, де найбільший я Вузьке вузьке місце підсистеми / O і вставити туди SSD - оскільки час і час затримки зводяться до низької постійної.

Ознайомтеся з цим дослідницьким документом, який склали MS (на жаль, не дуже детально про особливості SQL Server): Міграція зберігання сервера на SSD: Аналіз компромісів .

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


Дякую за посилання на статтю MS. Розчаровує специфіку неприємно, чи не так? :) На жаль, невеликі випадкові записи - це дійсно те, що може відповідати SSD. У двох словах, навіть для невеликого запису (тобто 4 КБ), SSD повинен прочитати весь блок в пам'яті, змінити його і виписати назад. Це так, як працює флеш-пам’ять поточного покоління. Велика оглядова стаття SSD: anandtech.com/storage/showdoc.aspx?i=3531&p=1
Джон Роуз

2

Ви не можете змінювати характеристику вводу-виводу SQL-серверів. Основна одиниця доступу до диска для файлів даних - це 8Kb сторінка. Він пише їх здебільшого під час контрольного пункту, але також ліниво запише їх, коли зможе.
SQL не чекає завершення запису на диск даних перед поверненням, це лише запис журналу, який повинен бути завершений. Якщо ви можете зберегти на диску лише один журнал баз даних, це буде послідовне записування і буде нормально на звичайних швидких жорстких дисках.
Ударність продуктивності з точки зору SQL - це коли вона має читати диски. Якщо ви можете дати їй більше пам’яті, то SQL буде зберігати більше сторінок даних у пам'яті, що швидше, ніж будь-який диск, SSD або інше. Очевидно, ви також можете зменшити кількість прочитаних дисків, створивши відповідні індекси. Я сподіваюся, що SSD також допоможе в цих показаннях, оскільки вони, ймовірно, будуть випадковими і чекають, поки головки приводу будуть рухатися.
Я не знаю, про який розмір бази даних ми говоримо тут, але ви можете поглянути на HyperOS. Вони роблять сата-диски, які насправді є лише завантаженням оперативної палиці DDR2, із SSD або 2,5-дюймовим диском в якості резервної копії. Тоді схема доступу до сервера не матиме жодного значення. Я б не ставив журнали на щось подібне. Журнали - це те, що зберігає ваші дані консистентом, вони повинні працювати на надійному носії, і, незважаючи на резервне копіювання SSD та акумулятора, а сервер, ймовірно, має ДБЖ і т.д. у якомусь відмовному відбитті RAID-масиву.


1

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

При тривалих послідовних операціях стандартні диски працюють досить добре, тому не було б ніякої мети використовувати SSD (звичайно з точки зору продуктивності).


2
SSD-диски є фантастичними для випадкових операцій зчитування через затримку пошуку майже на нулі. Вони менш сприятливі для операцій з випадковим записом через те, що операція запису SSD включає читання всього блоку флешів (як правило, 128 КБ), модифікацію вмісту та записування всього блоку на спалах. Що стосується тривалих послідовних операцій, то кращі SSD-накопичувачі на рівні споживачів (Intel, OCZ Vertex, Samsung) досягають значно більше 200 МБ / сек зчитування, а 80 МБ-150 МБ записує, що набагато вище того, що може виробляти один спінінг-диск.
Джон Роуз

Ти впевнений? Я не розумію, чому операція запису повинна передбачати зчитування блоку даних перед тим, як їх знову виписати ... дані, що записуються, повинні бути в пам'яті комп'ютера, чи не так?
Массімо

2
@Massimo: тому що ОС записує лише кілька байтів, але SSD працює в одиницях (сторінках) 128 КБ (як правило). Він може написати лише сторінку розміром 128 КБ, нічого менше, нічого більше. Отже, коли ви змінюєте, скажімо, середину сторінки, привід зчитує всю сторінку, оновлює середину, а потім записує нову сторінку, як правило, десь в іншому місці, при цьому виключаючи старе місце розташування.
Крістіан Цюпіту

Крістіан Цюпіту правильний. У деяких SSD це зменшується за допомогою вбудованого кешу (я вважаю, що всі диски, що використовують контролер Indilinx, мають кеш-пам'ять 64 Мб), а також, можливо, також кешування запису операційної системи, якщо воно включено. Навіть кеш-пам'ять на 64 МБ має свої обмеження - хоча для сервера баз даних, що робить багато записів, 64 МБ може бути недостатньо. Виробники мікропрограмного забезпечення не випускають багато специфіки, але можна припустити, що кращі прошивки (Intel, Indilinx) роблять кілька інтелектуальних переупорядкувань / пакетних пакетів, щоб тримати невеликі випадкові записи на сторінці 128 КБ, щоб мінімізувати цей накладний обсяг.
Джон Роуз

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

0

Тут не додайте точку додавання до теми коментарів, але якщо ви встановите розмір сторінки / кількість читання для БД для будь-чого на SSD, то це кратне розміру сторінки SSD, це не повинно бути проблемою.

Я довго не працював над SQL Server, тому не впевнений, чи є ці параметри там. Я займаюся Oracle і DB2 протягом останніх декількох років, і це вирішило б ваші занепокоєння, оскільки БД буде правильно налаштовано на характеристики диска.


0

Я рекомендую вирівняти розділ, де зберігаються файли бази даних.

Я також рекомендую визначити, що стосується RAID 0 для perf (ldf та TempDB), та розмістити критичні дані на RAID 1 (mdf).

По-третє, вам дійсно слід оновити прошивку диска, а також прошивку / драйвери контролера SATA. Тим самим ви даєте апаратній компанії та їх розробникам шанс оптимізувати для вас перф.


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

У світі, де гроші не є об’єктом, все має працювати в кеш-пам'яті L1, що підтримується батареєю. У банківській галузі файл LDF так само важливий, як і mdf. Для наукових обчислень MDF - єдиний файл, який дійсно повинен бути 100%.
GregC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.