Я создаю базу данных, в которой будет около 30 таблиц, каждая таблица будет содержать десятки миллионов строк, а каждая таблица будет содержать один важный столбец и столбец первичного / внешнего ключа, чтобы максимизировать эффективность запросов перед лицом тяжелых обновления и вставки и интенсивно использовать кластерные индексы. Две таблицы будут содержать текстовые данные переменной длины, одна из них будет содержать сотни миллионов строк, а остальные будут содержать только числовые данные.
Поскольку я действительно хочу выжать каждую последнюю потерю производительности из имеющегося у меня оборудования (около 64 ГБ ОЗУ, очень быстрый SSD и 16 ядер), я подумывал о том, чтобы каждая таблица имела свой собственный файл, так что независимо от того, Я присоединяюсь к 2, 3, 4, 5 или более таблицам, каждая таблица всегда будет читаться с использованием отдельного потока, и структура каждого файла будет тесно выровнена с содержимым таблицы, что, как мы надеемся, минимизирует фрагментацию и сделает ее быстрее для SQL Server, чтобы добавить к содержанию любой данной таблицы.
Одно предупреждение, я застрял на SQL Server 2008 R2 Web Edition . Это означает, что я не могу использовать автоматическое горизонтальное разбиение, что исключает это как повышение производительности.
Будет ли использование одного файла на таблицу на самом деле максимизировать производительность, или я упускаю из виду характеристики встроенного механизма SQL Server, которые делают это избыточным?
Во-вторых, если выгодно использовать один файл на таблицу, почему create table
мне дается только возможность выделить таблицу для группы файлов, а не для конкретного логического файла? Это потребовало бы от меня создания отдельной файловой группы для каждого файла в моем сценарии, что наводит меня на мысль о том, что, возможно, SQL Server не предусматривает преимуществ, которые я предполагаю получить от выполнения того, что я предлагаю.