MySql的Delete、Truncate、Drop分析

MySql的Delete、Truncate、Drop分析

 相同点:

  truncate 和不带 where 子句的 delete,以及 drop 都会删除表内的数据

 不同点:

  1.     truncate 和 delete 只删除数据不删除表的结构(定义)
  drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

  2.     delete 语句是数据库操作语言(dml),这操作会放到rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
  truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。

  3.    delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动
  显然 drop 语句将表所占用的空间全部释放。
  truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。

  4.   速度,一般来说: drop> truncate > delete

  5.  安全性:小心使用 drop 和 truncate,尤其没有备份的时候.否则哭都来不及


  使用上,想删除部分数据行用 delete,注意带上where子句. 回滚段要足够大.
  想删除表,当然用 drop
  想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
  如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

  Delete from Tablename where 条件

  Truncate table Tablename

  Drop table Tablename

 

另:Mysql 的  truncate和delete的区别

truncate table table_name 和delete from table_name 都是删除表中所有记录。

区别:

truncate能够快速清空一个表。并且重置auto_increment的值。而delete只能一行一行的删除。

但对于不同的类型存储引擎需要注意的地方是:

A 对于myisam

    truncate会重置auto_increment的值为1。而delete后表仍然保持auto_increment。

B 对于innodb

truncate会重置auto_increment的值为1。delete后表仍然保持auto_increment。但是在做delete整个表之后重启MySQL的话,则重启后的auto_increment会被置为1。

也就是说,innodb的表本身是无法持久保存auto_increment。delete表之后auto_increment仍然保存在内存,但是重启后就丢失了,只能从1开始。实质上重启后的auto_increment会从 SELECT 1+MAX(ai_col) FROM t 开始。

转载自https://www.cnblogs.com/zjfjava/p/5991613.html 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】Python简介和Python解释器

计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 机器语言(二进制)→汇编语言→(前面两种语言是与硬件进行交互) →高级语言(面向过程语言(C语言)→面向对象语言&#xff09…

python 判断当前时间是否为零点

import time time_now int(time.time()) #unix时间time_local time.localtime(time_now) #转换为win_timedt time.strftime("%H:%M:%S", time_local)# 转换成新的时间格式(18:59:20)adt.split(:)b[]for a in dt.split(:):b.append(a)c.join(b)if c000000:print(是…

多任务场景下单线程异步多线程多进程

多任务的场景:1.爬取不同url的内容,爬取同一个url分页内容。比如:豆瓣图书 Top 250 https://book.douban.com/top250?start0 实现豆瓣图书Top250的抓取工作,并存入excel中,如果采用的串行爬取方式,每次爬完…

django 按天水平分表并插入数据

db pymysql.connect("localhost", "数据库管理员名", "数据库密码", "数据库名")cursor db.cursor()unix_time str(int(time.time()))win_time datetime.datetime.now().strftime(%Y%m%d)table_name engineeringdata win_timesq…

【Python】单线程异步多线程多进程实例

上一篇文章主要介绍了多任务场景下单线程异步、多线程、多进程如何选择,链接:多任务场景下单线程异步多线程多进程 这里主要通过三个实例去验证一下简单的多任务场景下,三种方式的耗时情况,假设有10个互不关联的10个任务 多进程版…

python及pycharm2018软件安装教程

python及pycharm2018软件安装教程 python 3.6.5及pycharm2018.1.1 Win版32/64位下载地址: https://pan.baidu.com/s/1KdECgnrARK4HubPeFSKCTw 密码:bwc5 Python及PyCharm简介: Python 是一种面向对象的解释型计算机程序设计语言。是纯粹的自由…

【Python爬虫】requests与urllib库的区别

我们在使用python爬虫时,需要模拟发起网络请求,主要用到的库有requests库和python内置的urllib库,一般建议使用requests,它是对urllib的再次封装,它们使用的主要区别: requests可以直接构建常用的get和post…

2059 - authentication plugin 'caching_sha2_password' -navicat连接异常问题解决

使用navicat 连接 mysql 8.0.11 报 "2059 - authentication plugin caching_sha2_password ..." 解决办法: 进入mysql命令行然后输入 ALTER USER root% IDENTIFIED WITH mysql_native_password BY root1;

【教育】世界上最伟大的25个教育法则

鱼缸法则 心灵的成长需要自由 一家公司里,职员把几条小鱼放在一个鱼缸里,好几年了,鱼竟然还是那么小,于是大家都认为这鱼就是小个头。一天鱼缸被打破了,就把它们养在院子塘里,没想这些鱼疯了似地长得很大…

mysql安装版安装

1、到mysql官网。选择windows,选择.msi文件。下载 2、双击安装。安装时选择server即可ok。 3、在输入密码时,切记勿用小键盘上的数字(可能会造成后期连接数据库密码错误) 4、安装完成后,打开sql命令行。输入密码校正…

【测试工具】在linux测试环境安装bug管理工具禅道

在我们测试中,为了方便管理测试流程,提交测试发现的bug,我们需要使用到bug管理工具。有些大公司可能会自己开发一些bug管理工具,但是我们也会用一些开源的bug管理工具,比如Bugzilla,Redmine,Tra…

PyCharm点击设置没反应,无法进行设置

首先检查下是不是装了中文汉化包resources_cn.jar 如果有的话,解决办法:1.更换一个汉化包或者将原来的resources_en.jar也放进lib目录下 2.将汉化包都删除,只留下原版的resources_en.jar 转载自https://blog.csdn.net/xiangshangbashaon…

【测试工具】在linux测试环境访问禅道数据库

上一篇文章我们介绍了如何在linux测试环境安装bug管理工具禅道,现在我们来介绍一下如何访问禅道的数据库,访问数据库有什么用呢?首先,我们可以更改我们安装后的管理系统的名称(改为自己公司名称)&#xff0…

在命令提示符(cmd)下怎样复制粘贴(详细版)

我们的命令提示符面板,不能选中复制。应该怎么办呢? 按照下面的方法即可解决 输入“cmd”,确认。 此时打开了cmd窗口,在图中位置右键选择“属性”。 4 在弹出的窗口中,勾选“快速编辑模式”。 5 复制方框1中的文字…

【Python】提升Python程序性能的好习惯2

掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的资源浪费。 追求性能极限是一个有趣的游戏, 而过度优化就会变成嘲弄了。虽然Python授予你与C接口无缝集成的能力, 你必须问自己你花数小时的艰辛优化工作用户是否买帐. 另一方面, 牺牲代码的可…

python各种库安装

1、安装django pip install django 安装成功测试:进入cmd--》输入python--》输入import django-->输入 django.get_version(),若正常显示则说明安装成功 2、更新pip python -m pip install --upgrade pip 3、安装pymysql pip install pymysql 出现错误&…

【工具】SecureCRT安装和注册

SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。 SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过…

Windows下如何查看某个端口被谁占用并强制关闭

一、查看那个端口被调用 我告诉大家一个方法,^_^。 1、 开始—->运行—->cmd,或者是windowR组合键,调出命令窗口; 2、输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口&a…

【Python】random模块生成多种类型随机数

开发和测试过程中我们经常遇到需要随机数的场景,比如为了用户密码更安全我们有时会加入随机码,也就是将用户原密码连接上一串随机字符然后加密保存,又比如我们可能需要随机展示某张图片等等。这篇文章主要介绍了各种生成随机数的方法&#xf…

python grpc入门

准备 1.升级pip $ python -m pip install --upgrade pip 2.安装grpc $ python -m pip install grpcio 3.安装grpc tools $ python -m pip install grpcio-tools 4.下载example $ # Clone the repository to get the example code: $ git clone https://github.com/grpc…