MSSQL·大数据量历史数据清理的思路

database

阅文时长

| 0.6分钟

字数统计

| 963.2字符

主要内容

| 1、引言&背景

2、Delete删除法

3、提取回写删除法

4、声明与参考资料

『MSSQL·大数据量历史数据清理的思路』

编写人

| SCscHero

编写时间

| 2021/7/15 PM10:45

文章类型

| 系列

完成度

| 已完成

座右铭

每一个伟大的事业,都有一个微不足道的开始。

一、引言&背景   完成度:100%

a) 应对问题

面对上亿级别的数据量的删除/迁移时,删除时间往往非常长,是否有更高效的做法?

b) 应对场景

大数据量迁移/删除时(如海量历史数据删除),需要高效的清理手段。

c) 解决原理&方法

  1. Delete删除法:适用于删除小数据量的数据(个人认为适用于删除数据量在200万以下)。
  2. 有效数据提取,回写删除法:(个人认为适用于删除数据量远大于保留数据量,比例在2:8的情况可以考虑。如总量1亿的数据表,有9000万无效数据,1000万有效数据。)

二、Delete删除法   完成度:100%

Delete删除语句,T-SQL基础了。简单带过。

--基本语法

DELETE [DBName].[TableName] WHERE [Column]="XXXX"

三、提取回写删除法   完成度:100%

a) 主要思路

  1. 先写好查询语句,将准备提取的有效数据提取到另一张表。
  2. TRUNCATE原表,在GUI界面删除主键约束及自增属性。
  3. 将有效数据插回到原表中,设定好原来的主键约束及自增属性。

b) 常见Q&A

  1. 为什么要在GUI界面删除主键约束及自增属性。

    目前由于更改自增属性,MSSQL底层处理逻辑使用T-SQL实现较为复杂,因此使用GUI界面更改的方式。如遇到"阻止保存要求重新创建表的更改配置"等窗口,点击传送门。

  2. 在有效数据插回到原表后,设置主键及自增属性,为什么那么慢?

    因为MSSQL对数据表结构更改底层的处理是新建一个临时表,设定为自增主键,把数据插入再插回这一系列操作,所以理论上数据量越大,速度则越慢。如遇超时问题,点击传送门。

  3. 对于自增列问题使用,设置为"允许显式插入自增列"是否可行?

    在数据回写的时候也尝试过此问题,但即使开启了允许显式插入自增列,还是要报需要开启...。因此最简单的方式是关闭自增属性。

SET IDENTITY_INSERT [tablename] ON

四、声明与参考资料   完成度:100%

原创博文,未经许可请勿转载。

如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。

以上是 MSSQL·大数据量历史数据清理的思路 的全部内容, 来源链接: utcz.com/z/535767.html

回到顶部