Але нещодавно я натрапив на якусь базу даних на сервері, де в кожній базі даних було кілька 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 працює з усіма моделями відновлення, але є більш гнучким для повних і об'ємних моделей, ніж для простого режиму. Файли або групи файлів у базі даних можна створити резервну копію та відновити окремо. Це дозволяє відновити лише пошкоджені файли без відновлення решти бази даних. Файли в резервній копії файлової групи можна відновити окремо або як групу