Коли некластеризовані індекси повинні зберігатися в окремих файлових групах?


16

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

Коли доцільно зберігати некластеризовані індекси в окремій файловій групі та диску? Які докази парфмонів / профілерів привели б мене до такого висновку? Чи грає апаратура роль у прийнятті рішення (чи використовується RAID / SAN над одним приводом)?

Відповіді:


10

Найповільніша частина системи БД - це дискові диски. Усунення вузьких місць на рівні диска підвищить продуктивність. Коли дані шукаються та використовується індекс, спочатку шукається індекс, а потім отримуються відповідні дані. Якщо і індекс, і дані знаходяться на одних дисках, то виникає певна суперечка. Тоді як, якщо дані знаходилися на іншому (фізичному) диску, то відбувається швидше введення вводу, тим самим збільшуючи продуктивність. Основна частина, яку слід зазначити, - це те, що дані або покажчик знаходяться на окремих фізичних дисках або LUN.

Ви б використовували такий сценарій, якщо вам потрібно отримати кращі показники роботи системи, якщо у вас є диски. Для вашого PERFMON лічильників можна використовувати Physical Disk – Avg. Disk sec/Read, Physical Disk – Avg. Disk sec/Write, Physical Disk – Disk Reads/sec, Physical Disk – Disk Writes/secщоб мати до і після порівняння змін.


1
Якщо замість двох окремих фізичних дисків, якщо я якось керую індексами та даними на двох окремих дисках, наприклад D: \ і E: \, присутній на тому ж жорсткому диску, то це все одно дасть мені підвищення продуктивності, якщо я буду враховувати суперечки, пов'язані з читанням зберігання на жорсткому диску?
RBT

5

Звичайно, правда, що розповсюдження одночасного вводу / виводу між різними накопичувачами підвищить продуктивність - це не міф. Міф полягає в тому, що якщо це зробити двічі, то знову покращиться продуктивність.

Якщо Ви САМЕ , то розділення масиву на два розділи та розміщення індексів на одному та таблиць на іншому - це марна трата часу.


Я згоден, але я не вірю, що саме про це він питав.
NTDLS

Поставлене запитання: "Чи грає апаратура роль у прийнятті рішення (чи використовується RAID / SAN над одним приводом)?". Моя відповідь в основному така: Якщо ви RAID, не турбуйте розділення індексів і таблиць. Що не означає, що ви, безумовно, повинні, навіть якщо у вас немає RAID ...
Джек каже спробувати topanswers.xyz

5

Виділення індексів від даних на окремі файлові групи = поліпшення продуктивності є дуже дискусійним. Поліпшення продуктивності "може" статися, якщо у вас є базове обладнання для його підтримки, але лише через те, що розділення їх на різні групи файлів не дає вам посилення. І також НЕ легко виміряти приріст парфуму через це.

Посилання: http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA-Monkey.aspx

Спершу слід задати це питання. Навіщо це робити?

  1. Ви хочете покращити ефективність резервного копіювання НЕ, включаючи індекси?
  2. Ви хочете покращити ефективність читання та запису до цих індексів?
  3. Ви робите це для кращого керування розміщенням основних об'єктів?
  4. Чи є у вас великі обсяги даних, які мають різні потреби в продуктивності?
  5. Чи хочете ви використовувати SSD для некластеризованих індексів для підвищення продуктивності тощо ...

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

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


Мені подобається стаття Дана :-). Я думаю, нам трапляється імпортувати старі корпоративні стандарти і в якийсь момент поставити під сумнів це корисність.
Мар’ян

1

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

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

Щодо виступу, то ми не побачили нічого незвичайного після переїзду. Але це велика коробка зберігання SAN, де все тримається разом :-).


1

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

Однак це також значною мірою залежить від сховища . Наприклад; якщо у вас є сервер з приємним Fushion ioDrive (або щось подібне), а також є окремі спінінг-диски. Можливо, вигідніше буде тримати все на ioDrive (якщо тільки місце не обмежене). Також слід враховувати інші речі - конфігурація RAID, конфігурація мережевого сховища.

Виконайте певну розмітку на тестовому сервері з аналогічним обладнанням або (лише якщо вторинний сервер не є варіантом) під час не пікових годин із тимчасовими даними. Посилання DBA-Мавпа Санкара вище - це хороша їжа для роздумів.

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