Я створюю базу даних, в якій буде близько 30 таблиць, кожна таблиця містить десятки мільйонів рядків, а кожна таблиця містить один важливий стовпець та стовпчик первинного / зовнішнього ключа для того, щоб досягти максимальної ефективності запитів в умовах важких оновлення та вставки та активно використовують кластерні індекси. Дві таблиці містять текстові дані змінної довжини, одна з них містить сотні мільйонів рядків, а решта містить лише числові дані.
Оскільки я дуже хочу витіснити кожну останню крапку продуктивності з наявного обладнання (близько 64 ГБ оперативної пам’яті, дуже швидкий SSD і 16 ядер), я думав дозволити кожній таблиці мати власний файл, так що незалежно від того, чи Я приєднуюся до 2, 3, 4, 5 і більше таблиць, кожна таблиця завжди буде читатися за допомогою окремого потоку, і структура кожного файлу буде тісно вирівняна зі вмістом таблиці, що, сподіваємось, мінімізує фрагментацію та зробить її швидшою для SQL Server додати до вмісту будь-якої таблиці.
Одне застереження, я застряг у веб-версії SQL Server 2008 R2 . Що означає, що я не можу використовувати автоматичний горизонтальний розподіл, який виключає це як підвищення продуктивності.
Чи дійсно використання одного файлу в таблиці дійсно максимізує продуктивність, чи я не помічаю вбудовані характеристики двигуна SQL Server, які роблять це зайвим?
По-друге, якщо використання одного файлу в таблиці є вигідним, чому я create table
лише дає мені можливість розподілити таблицю до групи файлів, а не до конкретного логічного файлу? Це вимагає від мене створити окрему групу файлів для кожного файлу в моєму сценарії, що підказує мені, що, можливо, SQL Server не передбачає переваг, на які я припускаю, вийде від того, що я пропоную.