Navicat 清空表 vs 截断表,望文生义惹的祸

2024-03-01 03:20

本文主要是介绍Navicat 清空表 vs 截断表,望文生义惹的祸,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、 故障经过

 

1. 故障现象

收到告警mysql服务器剩余空间突然变成0了,赶紧登上去看了下,发现binlog突然增长10几G,由于服务器磁盘本身不大,就被占满了。登录mysql发现有两个可疑的全表delete慢sql:delete from tabname 在执行,恰好开发来问业务表删除特别慢怎么办,基本确定了是由于开发全表delete数据导致的问题。

2. 故障处理

把delete语句kill掉;手动清理几个binlog释放空间;待从库同步后清理异常增长10几G的大binlog。之后故障恢复。

3. 望文生义

以上其实就是很普通的全表delete大事务产生了过多binlog导致磁盘空间满的问题。

处理完在问开发为什么全表删除不用truncate要用delete的时候,开发反馈是通过Navicat工具图形化界面执行的,看到有一个“清空表”选项,按照平时的说法清空指的就是truncate,于是选择了“清空表”选项。然而实际上,Navicat的“清空表”指的是delete全表,“截断表”才是truncate操作。望文生义,没有仔细了解图形化工具各项含义,导致了这次故障。图形化工具虽然方便,但是没法直接看到各个选项背后对应的语句,尤其是经过翻译的中文版,更难看出实际对应的是什么操作。在执行修改操作时很容易踩坑,务必慎重。可以的话建议修改操作还是自己写命令,清楚知道自己在做些什么为好。

二、 Navicat 清空表 vs 截断表区别对比

其实主要也就是mysql delete全表与truncate的对比:

1. 对应SQL不同

  • 清空表: DELETE FROM table_name ;
  • 截断表: TRUNCATE [TABLE] table_name ;

2. 返回值不同

  • 清空操作,会返回删除的行数
  • 截断操作,返回0

3. 自增字段处理

  • 清空操作:不会重置自增字段,继续保留最大值。
  • 截断操作:自增字段值重置为初始值。

4. 效率比较

  • 清空操作: 会扫描全表,表数据越多删的越慢。
  • 截断操作:不扫描全表,效率高,几乎与表数据无关。 (相当于重新创建了表,只保留了表的结构,然后删除掉原有表,效率非常高)

5. 日志记录

  • 清空操作:会记录日志,可恢复。
  • 截断操作:不记录日志,无法恢复。 谨慎使用!

6. 触发器影响

  • 清空操作:相当于执行 DELETE删除语句,会激活触发器。
  • 截断操作:直接对表的操作,不会激活触发器。

参考

MySQL中清空表 delete table 和截断表 truncate table 的区别_HaHa_Sir的博客-CSDN博客

这篇关于Navicat 清空表 vs 截断表,望文生义惹的祸的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761047

相关文章

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

解决服务器VS Code中Jupyter突然崩溃的问题

问题 本来在服务器Anaconda的Python环境里装其他的包,装完了想在Jupyter里写代码验证一下有没有装好,一运行发现Jupyter崩溃了!?报错如下所示 Failed to start the Kernel. ImportError: /home/hujh/anaconda3/envs/mia/lib/python3.12/lib-dynload/_sqlite3.cpython-

VSC++: 括号对称比较

括号的使用规则:大括号,中括号,小括号{[()]};中括号,小括号[()];小括号();大括号、中括号、小括号、中括号、小括号、大括号{[()][()]};大括号,中括号,小括号,小括号{[(())]};大括号,中括号,小括号,小括号{[()()]};小括号不能嵌套,小括号可连续使用。 {[]}、{()}、([])、({})、[{}]、{}、[]、{[}]、[(])都属非法。 char aa[

Navicat Premium上出现Cannot create oci environment错误的解决办法

因为要连接运程的Orcale数据库,由于一些原因连不上,于是我把顶栏里的工具->选项->Oic(最最下面的一个)的oci.dll给替换了,然后就一直出现Cannot create oci environment这个错误 这是由于替换的oci.dll的版本不对,于是替换了各种版本有时候也会出现这个错误 最后就是因为版本不对,先看好安装的版本然后下载一个相对应的 下载地址:http://ww

Apache Kylin VS Apache Doris全方位对比

1 系统架构 1.1 What is Kylin1.2 What is Doris2 数据模型 2.1 Kylin的聚合模型2.2 Doris的聚合模型2.3 Kylin Cuboid VS Doris RollUp2.4 Doris的明细模型3 存储引擎4 数据导入5 查询6 精确去重7 元数据8 高性能9 高可用10 可维护性 10.1 部署10.2 运维10.3 客服11 易用性 11.1

电脑回收站被清空,怎么恢复丢失数据?

回收站,这个看似不太起眼的电脑功能,实际上在关键时刻能够为我们挽回重大损失,帮助我们重新获得至关重要的文件和数据。对于经常与电脑打交道的朋友们来说,当某个文件被不小心删除时,回收站往往成为我们文件找回和恢复的希望。但如果回收站也被清空,我们该如何是好呢?别急,小编已经为您整理了3个实用的恢复方法,一起来看看吧! 方法一:快速撤销删除恢复回收站文件 回收站文件如何恢复?在删除文件后,如果

vs环境下C++dll生成和使用

动态库和静态库: 动态库:全名动态链接库,用于将你的函数封装,让别人只能调用,不能看你的实现代码。由引入库和dll组成:引入库包含导出的函数和变量名,dll包含实际的函数和数据,运行时加载访问dll文件。  Windows API中的所有函数都封装在dll里面,最重要的三个: Kernel32.dll:包含管理内存、进程和线程的各个函数。User32.dll:包含用于执行用户界面任务,如窗口和

VS Code与SVN关联

VS Code是一款轻量级的集成开发环境,可通过安装插件与SVN进行关联。以下是将VS Code与SVN关联的步骤: 安装SVN插件:在VS Code中打开Extensions(快捷键:Ctrl+Shift+X),搜索并安装"svn"插件。 安装SVN命令行工具:在计算机上安装SVN命令行工具,确保在命令行中可以运行svn命令。 配置SVN路径:在VS Code中打开用户设置(快捷键:Ct