当前位置: 首页 > article >正文

MySQL数据库中删除数据有哪些方法

MySQL数据库中删除数据有哪些方法

在项目中遇到一个事情,我们同步所有监控主机的切片数据,大概1千台服务器的样子,每天的数据有十几万,刚开始数据查询还挺快,数据量越多查询效率就越慢。在同步数据的时候binlog也是比较大的,一段时间就把数据的存储耗尽了。于是就采取了,将这个数据放在另外的一个schema,并保留一段时间的数据。

在迁移过程中先将数据dump

dump的命令

mysqldump -h地址 -P端口 -uroot -p 数据库名 表1 表2  > 存储的文件名.sql
再去另外一个schema回退
mysql -u用户名 -p -h地址 -P端口 数据库名 < 存储的文件名.sql

这样数据就迁移完成,虽然耗时,但也是比较快的,几分钟内可是搞完,在可接受范围内,问题又来了。

  1. 原表数据删除怎么删除呢?
  2. delete、truncate、drop想到了这三种方式
  3. 这三种方式哪个速度快?
  4. 会不会记录在binlog?如果记录在binlog,那磁盘又会很大

于是在网上查了查做个对比
MySQL删除数据有三种

  1. delete:删除行数据
  2. truncate:删除表数据
  3. drop:整表删除

是否可以恢复

这些的区别在于delete是按照行进行删除的,通常在删除的时候添加where语句,delete的删除是有事务处理的,将信息记录在binlog中,通过一定的工具是可以被还原的,数据比较安全。
truncate删除整表,操作不会进存储,不能进行回滚的
drop删除整表,不能被回滚,把整个表的数据文件删除

删除速度对比

当数据量非常的时候,速度有明显的差别,删除速度由快到慢drop>truncate>delete 

表结构的变化

delete 保留原有表结构,只会删除数据,不会释放文件高水位
truncate 保留表结构,会释放文件的高水位,实际上是把.ibd文件删掉了,再建一个。
drop 不保留表结构,数据文件被删除

忽然间想到了truncate后自增主键id又从1开始了,小编又被自己的菜蠢哭了。他基于这些理论开始去实践了,似乎发现了新大陆的样子。

参考自: truncate和delete的区别

数据库–关于truncate和delete的区别


http://www.kler.cn/a/6033.html

相关文章:

  • Fastapi + vue3 自动化测试平台(1)--开篇
  • 左神算法基础巩固--3
  • 使用Registry explore实现法医检查练习
  • el-table 多级表头
  • 回顾2024年重磅AI发布汇总
  • 怎么用vs编python文件
  • react路由基础(六)
  • 淘宝开放平台API接口,接入方案如下
  • Learning Video Salient Object Detection Progressively from Unlabeled Videos笔记总结
  • IntelliJ IDEA2021安装教程
  • MOS的功耗计算-半桥的功耗
  • 第九章 React中的事件处理
  • ​力扣解法汇总1641. 统计字典序元音字符串的数目
  • MySQL OCP888题解071-干净关闭MySQL服务器
  • Matlab实现PCA算法(附上完整仿真源码)
  • AD360自助式密码管理
  • ActiViz.NET 9.2.2023 Crack
  • ToBeWritten之物联网通信接口调试
  • react常用语法
  • 2023年 合肥市庐阳区信息学竞赛区赛 小学组
  • shiro知识点梳理
  • Python 自动化指南(繁琐工作自动化)第二版:七、使用正则表达式的模式匹配
  • ES、MongoDB、HBase的区别和使用场景
  • 一起Talk Android吧(第五百三十六回:RxJava中的事件转换)
  • 浅谈常量字符串
  • java基础:java泛型相关内容