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即可。

  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/SCscHero/p/15026158.html
Copyright © 2011-2022 走看看