zoukankan      html  css  js  c++  java
  • 记录:SQL Server 将近一亿行数据的清理过程

    昨天下午,老客户找到我,说考勤系统非常卡,数据库11个G的容量,光每天备份都很头疼。

    几年前,考勤系统跟OA对接的项目是我做的,大致有一定了解,所以听到这个消息,我第一感觉是考勤机故障:同一条打卡记录,重复写入数据库。这个也是很多老式考勤系统的通病。

    于是,祭出远程连接神器,查询分析器里一看:9465万行数据。

     于是,想当然的 使用 Delete 去删除过期的考勤数据。此处省略不表。

     接下来关闭远程连接神器,估摸几个小时之后再连接进去查看结果。

     时钟滴答滴答,几个小时之后,查看结果,发现报错:“数据库的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc列"。

    想起来了,delete 是全表扫描,full log,这样肯定会爆掉。

    于是,只能单独分表,操作如下:

    1、有用的数据单独插入一个新表,select into new_table where date>=''  ,由于使用了索引,,几百万行的数据 也就花了几秒时间  。

    2、truncate table,不记录日志,这样才可以操作,将近一亿行的数据,秒删。

    3、再用单独的新表还原回去。

    The End

  • 相关阅读:
    HttpWatch 有火狐版本?
    JQgrid的最新API
    jqgrid
    JSON的学习网站
    array创建数组
    Numpy安装及测试
    SQLite3删除数据_7
    SQLite3修改数据_6
    SQLite3查询一条数据_5
    SQLite3查询所有数据_4
  • 原文地址:https://www.cnblogs.com/cyg17173/p/12970447.html
Copyright © 2011-2022 走看看