项目情况是这样的,数据库中有一张计费表,这张表是随着时间无限增长的,数据会越来越多,count一下数据共有8千万条,而现在需要删除2019年之前所有的数据,大概7千多万条。表中有索引。

我直接使用

DELETE FROM table_name WHERE recordtime < "2019 01-01 00:00:00"

这相当于愚蠢,因为直到连接断开,操作结果都没有返回,我估计是需要很多时间,但是愚蠢的我并不知道这个时间会大好几天这么长(我算了一下),当时删除两条数据花了0.05s,那删除7千万条需要多少小时呢将近500小时,这种估算的时间还算少的。因为删除数据的时候还要更新索引。时间会更多。

delete语句删除数据的过程是一条一条删除的,并且同时将该行的删除操作作为十五记录在日志中保存以便进行回滚操作。

这边我需要介绍另一种方案:

我需要删除2019年之前的数据,也就是需要保留以下部分数据的,

方案如下 :

1、创建新表backup和老表oldtable一样的表结果,具体操作: CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2;//筛选条件是选不出数据的

2、提取旧表中你需要的数据并插入新表, 具体操作:INSERT INTO 新表 SELECT * FROM 旧表 WHERE 查询条件

3、禁用外键为初始化旧表做准备SET foreign_key_checks = 0;(如果旧表中有外键,最好禁用下,否则truncate会提示,)

4、清空旧表中所有的数据: TRUNCATE TABLE 旧表;

5、将新表中数据全部在导入旧表

6、开启外键 set foreign_key_checks = 1;

上面的方案执行起来大概需要十分钟。

TRANCATE操作:一次性从表中删除所有数据并不把单独的删除记录记入日志保存,删除的记录不可恢复。

当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间

这边介绍一下delete,drop和truncate的使用场景

速度:drop>truncate>delete

如果想删除表,drop

如果想保留表而将所有数据删除,如果和事务无关,用truncate

如果和事务有关,或者想触发trigger,用delete。当然删除部分数据用delete

mysql数据库删除千万条数据的操作方案相关推荐

  1. mysql数据库删除一条数据后还想让新增数据从空缺id处开始

    方法1: truncate table 你的表名 //这样不但将数据全部删除,而且重新定位自增的字段 方法2: delete from 你的表名 dbcc checkident(你的表名,reseed ...

  2. Mysql数据库导入千万条数据

    第一步 创建数据库 sql语句: CREATE DATABASE aaaa 第二步 创建表 sql语句: CREATE TABLE usertb( id serial, uname varchar(2 ...

  3. mysql数据库删除重复的数据只保留一条

    问题引入 假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name. 现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有效 ...

  4. Mysql中一千万条数据怎么快速查询

    文章来源: 学习通http://www.bdgxy.com/ 目录 普通分页查询 如何优化 偏移量大 采用id限定方式 优化数据量大问题 普通分页查询 当我们在日常工作中遇到大数据查询的时候,第一反应 ...

  5. MySQL数据库C接口的数据查询操作示例

    MySQL数据库C接口的数据查询操作示例 命令行操作 (1)建库建表(已有则不用) 连接MySQL服务器,并登录之.选择某个数据库.假设用户在这个数据库下已有一个表了. (2)查询所有数据的方法 SE ...

  6. python+mysql:实现一千万条数据插入数据库

    实现思路如下: 复制原数据库moviedb至newmoviedb 设置max_allowed_packet,以保证一条insert语句可以插入足够多的元组 用python生成一条一次插入10000个元 ...

  7. mysql数据库删除重复的数据保留一条

    1.问题引入 假设一个场景,一张用户表,包含3个字段.id,identity_id,name.现在身份证号identity_id和姓名name有很多重复的数据,需要删除只保留一条有效数据. 2.模拟环 ...

  8. mysql批量删除5000条数据_mysql批量删除大量数据

    mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM s ...

  9. 你向 Mysql 数据库插入 100w 条数据用了多久?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 目录 1.多线程插入(单表) 2.多线程插入(多表) 3.预处理S ...

最新文章

  1. 使用Cumulus和Flash Player搭建视频会议示例
  2. Java 中字符串的格式化
  3. 吴渴楨 160809206
  4. 如何通过网站优化的方式提升网站转化率?
  5. 函数模块:POPUP_TO_INFORM
  6. 华为交换机一次性进入多个接口_华为交换机端口的批量配置命令
  7. lbs的核心技术都有哪些?_哪些行业适合做小程序呢?
  8. mysql数据库、表、索引、触发器
  9. python排序之sort和sorted
  10. Java异常之try,catch,finally,throw,throws
  11. React Navigation 导航栏样式调整+底部角标消息提示
  12. [导入]Visual Studio 2005 Team Edition软件架构系列课程(1): 概述
  13. 首款搭载鸿蒙os的设备,华为发布会配件汇总,首款搭载 鸿蒙OS 的设备来了
  14. ubuntu18 防火墙关闭_Ubuntu防火墙怎么关闭或打开?
  15. 微信开发——本地测试环境搭建
  16. ctf 选择题 题库_看雪CTF题库平台 | 赛练结合,助你夺冠!
  17. 锐起无盘4.2服务器设置,锐起无盘4.5免费版
  18. 1.5 密码学应用PKI体系
  19. 互联网请回答2020
  20. 软考中高级项目管理案例分析-人力资源管理

热门文章

  1. 蒙特卡洛树搜索算法实现_蒙特卡洛树搜索实现实时学习中的强化学习
  2. 西藏计算机一级,西藏计算机一级考试成绩查询入口
  3. 存货核算凭证无法删除的修复 U8 10.1存货核算中的凭证列表显示时,部分凭证会分两行显示,且不能删除...
  4. H5新特性:canvas学习2
  5. MDPI高级搜索——包含“Appendix”的论文
  6. 大数据与python的关系_python数据分析和大数据之间有什么关系?
  7. 进阶篇|手游联运系统营收的途径有哪些?手游联运系统营收秘诀?
  8. 廉洁文化 计算机学院,计算机学院“廉洁在志·系列作品”征集活动评选结果
  9. SystemVerilog 类和对象(三)
  10. pytorch历史版本下载