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
по умолчанию.
Так что это не
ссылка / ссылки на исходные значения мастер-таблицы
Предыдущая версия строки просто копируется, как она есть в историческую таблицу при каждой модификации.