Mysql常用删除方式比较

客户提问:
Mysql常用删除方式比较?

凯铧互联技术回复:
在MySQL数据表创建成功后,常常需要修改和删除字段。 在MySQL中,删除字段的方法主要有delete、delete和drop三种,他们的方法、灵活性各不相同,以下是他们的介绍和比较:

一、delete

1. delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。

2. delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。

3. delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。

二、truncate

1. truncate是DDL,会隐式提交,所以,不能回滚,不会触发触发器。

2. truncate会删除表中所有记录,并且将重新设置高水线和所有的索引,缺省情况下将空间释放到minextents个extent,除非使用reuse storage,。不会记录日志,所以执行速度很快,但不能通过rollback撤消操作(如果一不小心把一个表truncate掉,也是可以恢复的,只是不能通过rollback来恢复)。

3. 对于外键(foreignkey )约束引用的表,不能使用 truncate table,而应使用不带 where 子句的 delete 语句。 4、truncatetable不能用于参与了索引视图的表。

三、drop

1. drop是DDL,会隐式提交,所以,不能回滚,不会触发触发器。

2. drop语句删除表结构及所有数据,并将表所占用的空间全部释放。

3. drop语句将删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。 四、总结

4. 在速度上,一般来说,drop> truncate > delete。

5. 在使用drop和truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。

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

 

本文适用于:

Mysql常用删除方式比较?

 

上述就是Mysql常用删除方式比较简述,如果您还有阿里云服务器/阿里云产品折扣以及阿里云技术服务等,请您直接联系本站客服,阿里云代理商凯铧互联为您提供一对一服务。 阿里云代理商凯铧互联会为您提供专业全面的技术服务,同时还能为您提供阿里云产品购买的专属折扣优惠。通过凯铧互联购买可以获得折上折优惠!若您需要帮助可以直接联系我方客服,阿里云代理商凯铧互联专业技术团队为您提供全面便捷专业的7×24技术服务。 电话专线:136-5130-9831,QQ:3398234753。

凯铧互联已为大批中小科技企业的创业创新活动提供了免费的技术培训服务,凯铧互联的核心优势如下:

1、一对一的客户经理服务:专业的上云架构咨询与指导、完整的售前支持与解决方案、及时的售后支持

2、云运维服务专家:上云迁移环境搭建服务、云计算相关培训、一站式运维服务

3、全面的ISV.SI能力:提供包括云基础资源+ISV.SI服务在内的一体化服务

4、选择我们的服务,我们将成立以1名服务经理为组长的服务小组,现场技术人员一主一备,长期稳定。

作为阿里云代理的凯铧互联建立有一支高素质的专业技术队伍支撑阿里云相关业务,现有一名阿里认证架构师ACE、五名阿里认证工程师ACP,随时响应客户的服务需求,服务范围已覆盖东北、华北、西北、华中等地多座城市,并为全国多家上市公司和大型集团的上云项目提供了从咨询、设计、采购到实施的一体化综合服务。按照阿里云官网解释其就是“由阿里云官方授仅的本地服务的4S店“,业务可以覆盖全国范围。

说明:本站的技术类文章,均为内部学习交流使用,并不能代表产品厂家,或者是第三方的观点。非专业技术类人员,请勿对云服务器等设备进行操作,以免造成设备不可使用或数据丢失。同时凯铧互联小编建议用户一定要定期对云服务器等数据进行备份保存!


北京凯铧互联科技有限公司(简称凯铧互联)由多名前阿里云资深技术专家创立,核心员工来自阿里巴巴、腾讯等,作为阿里云、腾讯云、华为云、天翼云、百度智能云重要的合作伙伴,专注于为企业用户提供云计算及云计算的解决方案。阿里云、腾讯云、华为云、天翼云、百度智能云优惠购买专线:158-0160-3153(微信同步)