SQL Server - временная таблица - затраты на хранение

Есть ли какая-либо информация в сети, где я могу проверить, насколько высока стоимость хранения для временных таблиц?

Будет ли сервер создавать полную печатную копию строки / кортежа, которая была изменена? Или сервер будет использовать ссылку / ссылки на исходные значения основной таблицы, которые не были изменены?

Например. У меня есть строка с 10 столбцами = хранилище 100 КБ. Я изменяю одно значение этой строки, thow times. У меня есть строки в исторической таблице после этого изменения. Является ли стоимость хранения заполнения для основной и хронологической таблицы ~300 КБ?

Спасибо за каждый намек!

Ragards

1 ответ

Решение

Будет ли сервер создавать полную печатную копию строки / кортежа, которая была изменена? Или сервер будет использовать ссылку / ссылки на исходные значения основной таблицы, которые не были изменены?

Вот цитата из книги Дмитрия Короткевича Pro Internals Pro SQL Server Internals, которая отвечает на ваш вопрос:

Короче говоря, каждая временная таблица состоит из двух таблиц - текущей таблицы с текущими данными и таблицы истории, в которой хранятся старые версии строк. Каждый раз, когда вы изменяете или удаляете данные в текущей таблице, SQL Server добавляет исходную версию этих строк в таблицу истории.

Текущая таблица всегда должна иметь primary key определены. Более того, как текущие, так и исторические таблицы должны иметь два datetime2 столбцы, называемые столбцами периода, которые указывают время жизни строки. SQL Server заполняет эти столбцы автоматически в зависимости от времени начала транзакции при создании новых версий строк. Когда строка была изменена несколько раз в одной транзакции, SQL Server не сохраняет незафиксированные версии промежуточных строк в таблице истории.

SQL Server помещает таблицы истории в файловую группу по умолчанию, создавая неуникальные кластеризованные индексы в двух столбцах datetime2, управляющих временем жизни строки. Он не создает никаких других индексов в таблице.

В выпусках Enterprise и Developer Edition таблицы истории используют страницу compression по умолчанию.

Так что это не

ссылка / ссылки на исходные значения мастер-таблицы

Предыдущая версия строки просто копируется, как она есть в историческую таблицу при каждой модификации.

Другие вопросы по тегам