Я использую встроенную sp_spaceused
хранимую процедуру до и после выполнения операции в нашем программном обеспечении, чтобы увидеть, какие таблицы имеют вставки строк и как изменяется размер каждой таблицы.
Что я вижу, так это то, что из всех таблиц, в которые записываются строки, лишь небольшое количество показывает, что таблица увеличилась в сторону. Другие, которые показывают строки, были добавлены, не показывают изменения в размере от этой хранимой процедуры.
Единственный случай, когда это не так, - это первая транзакция после выполнения усечения для всех таблиц. Поэтому мне кажется, что вместо хранения дубликатов данных SQL Server показывает, что строки вставлены, но должны просто хранить указатели на предыдущие идентичные строки.
Кто-нибудь может подтвердить это, пожалуйста?
источник
Ответы:
Нет, SQL Server не обнаруживает повторяющиеся строки
SQL Server заполняет пустые или частично пустые страницы в выделенных страницах.
Поэтому, если у меня очень узкая строка (скажем, в 2 столбцах), я могу добавить еще несколько сотен строк на той же странице, не увеличивая используемое пространство.
Быстрое и грязное демо (без дублирующих строк, но вы можете поиграть с этим, если хотите)
источник
Это зависит от версии SQL Server и параметров сжатия данных:
Таким образом, для сжатия префиксов и словарей (сжатие страниц) SQL Server использует указатели для хранения (частично или полностью) дублированных значений (не дублированных строк) в одном столбце или в diff. колонны.
Результаты:
источник