На даний момент у нашій базі даних є лише одна FileGroup, PRIMARY, яка містить приблизно 8 ГБ даних (рядки таблиці, покажчики, повнотекстовий каталог).
Коли настав час розділити це на вторинні файли даних? Які критерії я повинен знати?
На даний момент у нашій базі даних є лише одна FileGroup, PRIMARY, яка містить приблизно 8 ГБ даних (рядки таблиці, покажчики, повнотекстовий каталог).
Коли настав час розділити це на вторинні файли даних? Які критерії я повинен знати?
Відповіді:
У цьому питанні є дві частини: коли додати новий FILEGROUP і коли додати новий FILE у групі файлів. Спочатку поговоримо про теорію:
Право Марка щодо основної причини - це продуктивність.
Вторинна причина - відновлення після катастроф. За допомогою SQL Server 2005 і новіших версій ви можете робити відновлення файлових груп. У разі катастрофи ви можете спочатку відновити лише основну групу файлів та частково підключити базу даних до Інтернету для запитів. Користувачі можуть запускати запити під час відновлення інших груп файлів. Це корисно для баз даних з великою кількістю історичних даних, які, можливо, не потрібні відразу, або сховищами даних, які потребують завантаження даних у поточні таблиці, не потребуючи історичних даних для доступу.
Ще одна причина - профіль читання / запису груп даних. Якщо у вас є деякі дані, до яких постійно записуються, та інші дані, що мають велику активність читання, ви можете створити різні типи пам’яті для задоволення цих потреб. Ви можете поставити важкі записи на рейді 10, а залишити зачитані речі на більш дешевих рейдах 5.
Тепер давайте поговоримо про файли та групи файлів. Розміщуючи об'єкти в SQL Server, ви повинні розміщувати їх на рівні файлової групи. Ви можете розмістити таблицю або індекс у групі файлів, але не можете вибрати конкретний файл. Отже, все, про що ми вже говорили, стосувалося того, коли додати групу файлів - але коли ви додасте файл?
Якщо ви проектуєте сховище і у вас є 80 жорстких дисків, є кілька способів розбити його:
Різні підсистеми зберігання мають різні профілі продуктивності. Я працював з деякими SAN, які найкраще працювали з 12-16 приводними масивами, і нічого більшого, ніж це, не покращило продуктивність. Інший приклад - SAN з багатостороннім способом: якщо у вас є кілька HBA, які підключають ваш сервер до вашого сховища, і якщо ваше програмне забезпечення для багатошляхного руху не є реальним активним / активним, то для розподілу навантаження вам може знадобитися один масив на кожен шлях. Чотири доріжки, чотири пули накопичувачів отримають кращі показники роботи цих типів накопичувачів.
У цих випадках у вас є чотири різних масиви, чотири різні диски під Windows (якщо ви не використовуєте точки монтажу, і навіть тоді це різні папки), і вам знадобляться чотири окремих файли в SQL Server. Ці окремі файли можуть бути в одній групі файлів.
Основна причина - продуктивність. Коли на вашому основному дисководі файлових груп файлів не вистачає IOPS, вам потрібно буде розгорнутись на другу групу файлів, щоб розділити IOPS на декілька дисків / LUN, залежно від конфігурації пам’яті.
EDIT: Бред Вілсон зробив хороший коментар щодо SSD-дисків. Якщо ви використовуєте складену систему зберігання SSD / SATA / FC, можливо, вам потрібно мати різні групи файлів для різних типів пам’яті. Потім ви можете помістити ваші екстремальні таблиці вимог IOPS на файл SSD-файлу, тоді як таблиці історії / статистика можуть зберігатися в дешевих файлах SATA.
Я також хотів би зазначити, що в цьому питанні є також аспект відновлення / доступності даних. Використовуючи кілька груп файлів і не розміщуючи жодних визначених користувачем об'єктів у основній групі файлів, ви маєте більшу гнучкість у наданні можливості відновлення в Інтернеті. це дозволяє відновити частинку на рівні групи файлів.
Відновлення в Інтернеті доступні у виданнях Enterprise та Developer на сервері sql пізніше 2005 року
Ще одна думка, яка спадає на думку, - це відокремити лише зчитувані статичні довідкові дані від транзакційних даних. Для більших баз даних це може зменшити кількість часу та / або місця, необхідного для виконання резервної копії.