База даних з декількома .mdf-файлами


10

Я шукав в Інтернеті, але не знайшов того, що шукаю.

Проблема / запит, наскільки мені відомо, база даних у SQL Server повинна мати один .mdf-файл, а можливо, деякі .ndf-файли та один .log-файл.

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

Я взяв резервну копію якоїсь бази даних, перемістив їх на інший сервер і відновив первинний файл як .mdf, а всі інші файли як .ndf, очевидно, за винятком файлу журналу, він був відновлений як .log.

Тепер мої запитання:

  1. Чи є розум у наявності декількох .mdf-файлів для бази даних?
  2. Чи є недоліки наявності декількох .mdf-файлів?

Це було SQL Server 2008 R2 64bit Enterprise Edition

Будь-яка порада чи вказівник у правильному напрямку дуже цінується. Дякую.

Відповіді:


14

Але нещодавно я натрапив на якусь базу даних на сервері, де в кожній базі даних було кілька mdf-файлів.

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

Чи є розум у наявності декількох .mdf-файлів для бази даних?

Якщо ви маєте на увазі:

Чи є мудрість мати кілька основних файлів для бази даних?

Відповідь - ні, база даних може мати лише один основний файл даних.

Але якщо ви маєте на увазі:

Чи є розум у наявності декількох файлів даних (.mdf, .ndf або інше ім’я) для бази даних?

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

Відповідно до цієї статті MSDN BOL

Групи файлів використовують пропорційну стратегію заповнення для всіх файлів кожної файлової групи. Коли дані записуються у групу файлів, двигун бази даних SQL Server записує суму, пропорційну вільному простору у файлі, кожному файлу у групі файлів, замість того, щоб записувати всі дані в перший файл до повного заповнення. Потім він записує в наступний файл. Наприклад, якщо у файлу f1 є 100 Мб вільного, а у файлу f2 - 200 Мб, одна міра виділяється з файлу f1, два розширення з файлу f2 тощо. Таким чином обидва файли стають заповненими приблизно в один і той же час, і досягається проста смуга.

Інша перевага, яку я знаю, - це вважати базу даних на 1 ТБ, якщо у вас є один файл даних, і ви хочете відновити цю базу даних на якомусь іншому сервері, що малоймовірно, у вас буде 1 ТБ вільного місця. Тепер, якщо однакова база даних поширюється на різні файли, кожен з яких має розмір 250 G, відновлення стає простішим. Це насправді не може бути вашим сценарієм, але це дуже допомагає легко знайти сервер з чотирма дисками 250 Г, ніж один привід 1 ТБ

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


Якщо у БД є більше одного файлу файлів даних, тобто ndf та основного, тобто все ще за замовчуванням. При цьому, якщо один із файлів БД, який використовується для створення таблиць / індексів на ньому, чи створює він будь-яку продуктивність над головою? Я маю на увазі групу файлів за замовчуванням досі первинною, але створена таблиця та індекси є у файлах даних.
Hi10
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.