SQL Server 2016 - 2017:时态表与列存储索引的深度解析
1. 时态表概述
SQL Server 2016 和 2017 引入了系统版本控制的时态表,这是一项强大的功能,可用于审计特定表中的所有更改,还能检索这些表在历史上任何时间点的状态。当更新当前行时,SQL Server 会自动更新当前行的时间段,并将旧版本的行插入历史表。
2. 历史表开销
将非时态表转换为时态表非常简单,只需两条 ALTER TABLE 语句即可获得完整的时态表功能。然而,这并非毫无代价,为表添加时态功能会给所有数据修改操作带来性能开销。
- 单条更新操作:在时态表中对一行进行单条更新操作,比在非时态表中大约慢 30%。
- 少量行更新(<1000):锁定、计算并将数据插入历史表会使更新速度减慢 50%。
- 大量行更新(50,000 行):在时态表中更新 50,000 行所需的时间大约是非时态表的八倍。
- 大规模更新(>100K 行):时态表的大规模更新比非时态表慢 10 倍。
| 更新行数 | 非时态表更新时间 | 时态表更新时间 | 倍数关系 |
|---|---|---|---|
| 少量行(<1000) | X | 1.5X | 1.5 倍 |
| 50,000 行 |
超级会员免费看
订阅专栏 解锁全文
1067

被折叠的 条评论
为什么被折叠?



