mysql drop truncate delete 之间的区别
01 请解释说明以下语句之间的区别?
drop table stu;
truncate table stu;
delete from stu;
| 区别分析 | drop table stu; | truncate table stu; | delete from stu; |
|-------|-----------------|---------------------|-------------------------------|
| 功能效果 | 删除表结构+数据 | 删除表数据(释放空间) | 删除表数据(标记删除) |
| 删除逻辑 | 彻底删除 | 物理删除(段区页层面删除) | 逻辑删除(逐行删除) |
| 删除效率 | 效率快(和数据量无关) | 效率快(和数据量无关) | 效率慢(和数据量有关) |
| 自增影响 | 新增自增序列 | 重置自增序列(释放高水位线) | 延续自增序列 |
| 数据恢复? | 利用日志文件恢复 | 利用备份恢复/延时从库恢复 | 利用日志文件恢复(快速)
binlog也可以 |
binllog 可能只有1天的数据, 不能把所有数据都恢复的。