zoukankan      html  css  js  c++  java
  • MSSQL·大数据量历史数据清理的思路

    阅文时长 | 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即可。

  • 相关阅读:
    css3实现轮播2
    css3实现轮播1
    读阮一峰ES6笔记4:字符串的新增方法
    读阮一峰ES6笔记3:字符串的扩展
    应用流策略与检查配置结果
    配置流策略
    配置流行为
    配置流分类
    "流量监管"和"流量整形"的区别
    802.1p 优先级与内部优先级的映射关系
  • 原文地址:https://www.cnblogs.com/SCscHero/p/15026158.html
Copyright © 2011-2022 走看看