温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SQL SERVER 2016 新功能SVT是怎么进行数据清理

发布时间:2021-12-14 16:56:54 来源:亿速云 阅读:142 作者:柒染 栏目:大数据

这期内容当中小编将会给大家带来有关SQL SERVER 2016 新功能SVT是怎么进行数据清理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

SQL SERVER 很有意思2016 推出一个历史版本控制的功能,这个功能的含义在于帮助数据表在操作中根据时间来进行曾经操作的记录,实际上等同于

SQL SERVER 2016 新功能SVT是怎么进行数据清理

先不吐槽这个功能在设计的初期有没有毛病,但我们的的确确是遇到了,并发高,同时有回滚的时候,造成时间线出现问题,倒是任务无法执行的问题。虽然是少量的,但这个功能其实也有不严谨的地方。

具体这个功能怎么开启,使用,这里就不说了,这里要说的是数据怎么清理,因为存储的是一个行曾经的历史活动,所以他的数据量一般是数据表频繁修改过的匹配,也就是N条你曾经的数据。

SQL SERVER 2016 新功能SVT是怎么进行数据清理

SQL SERVER 2016 新功能SVT是怎么进行数据清理

SQL SERVER 2016 新功能SVT是怎么进行数据清理

废话不说先做几个,测试我们先来领会一下这个功能,历史版本控制表,在建立的时候,会有两种,如果建立成另一种则会给后面的自动化数据定期清理造成一定的麻烦。所以上面给出的图形,是两个一个是给定名字,一个是不。

插入数据,修改数据,查看历史版本控制表

SQL SERVER 2016 新功能SVT是怎么进行数据清理

通过上图也就会明白,这个历史版本控制的需求,

1必须的有主键,否则你怎么能知道一行变化并确认

2 必须的有时间字段,以及变化的开始时间和变化的结束时间,并且行改变的开始时间是他的sysendtime 时间,而他与他主键一致,时间点在sysstarttime一致的是sysstarttime 从上图我们就可以看出。

3 在有历史版本控制表与原表工作的时候,有一些操作是被禁止的

SQL SERVER 2016 新功能SVT是怎么进行数据清理

例如上面的操作。

下面我们的直奔主题了,怎么清理这些历史版本的数据,其实处理起来很简单,主要是你要在处理的时候,解除历史版本控制表与主表之间的关联,让其变成一个与实体表无关的表,然后就可以任你“宰割”了

SQL SERVER 2016 新功能SVT是怎么进行数据清理

在处理完毕后,我们在将他与原表进行挂载,继续为我们工作,但在这段期间数据表操作的数据变化不会记录到我们的历史版本控制表。并且历史版本控制表,只记录UPDATE 和 Delete 的操作。

但如果和上面说的,如果你在操作的过程中,你建立历史版本控制表的时候,没有给表名,则你每次进行上面的操作的时候,一开 一闭,你的SQL SERVER 会将你的历史版本表的表名进行变化,这虽然没有什么问题,但对你自动化的清理历史表的数据有一定的难度,所以建议还是给一个名字,降低以后自动化处理的麻烦。或者你在

 alter table XXXX  set  (system_versioning = on ) (history_table = 你要设定的历史版本表名) 也可以纠正你曾经因为没有设置表名而历史版本表名很随意的问题。

当然也有自己创建自己的历史归档表的方式,然后挂载自己创建的历史归档表,但需要注意的是,这样建立的表在聚簇和非聚簇索引的需求,(大白话就是主键,和 相关事件字段与主键的索引)你要自己处理好.

那么自己写一个定期处理的他的存储过程,会是一个很方便的事情。

另这样的表在某些操作上都会和普通的表不一样,

例如删除一个表,需要先解除实体和历史版本控制表之间的关系,然后在分开删除表。

上述就是小编为大家分享的SQL SERVER 2016 新功能SVT是怎么进行数据清理了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI