SQL Server - 时间表 - 存储成本

时间:2018-02-09 07:31:52

标签: sql-server temporal-tables

网上是否有任何信息,我可以在哪里验证时态表功能的存储成本有多高?

服务器是否会创建已修改的行/元组的完整硬拷贝? 或者服务器是否会使用引用/链接到未修改的主表的原始值?

例如。我有一行10列=存储100 KB。我改变那一行的一个值,thow times。在变化之后,我在历史表中有行。主表和历史表的填充存储成本是否约为300KB?

感谢您的每一个提示!

Ragards

1 个答案:

答案 0 :(得分:0)

  

服务器是否会创建行/元组的完整硬拷贝   改性?或者服务器是否使用原始的引用/链接   未修改的主表的值?

以下是帮助您解答问题的书Pro SQL Server Internals by Dmitri Korotkevitch的引用:

  

简而言之,每个时态表由两个表组成 -   包含当前数据的当前表,以及存储的历史表   旧版本的行。 每次修改或删除数据时   在当前表中,SQL Server添加了这些行的原始版本   到历史表

     

当前表应始终定义primary key。此外,   当前和历史表都应该有两个datetime2列,   称为句点列,表示行的生命周期。 SQL   服务器根据事务自动填充这些列   创建行的新版本时的开始时间。当一排   已经在一个事务中多次修改过SQL Server   不保留历史记录中未提交的中间行版本   表

     

SQL Server将历史记录表放在默认文件组中,创建   两个datetime2列上的非唯一聚簇索引   控制行寿命。它不会在上面创建任何其他索引   表。

     

在Enterprise Edition和Developer Edition中,历史记录表都使用   页面compression默认情况下。

所以它不是

  

引用/链接到主表的原始值

上一行版本只是在每个mofification上复制到历史表中。