🚀 Database
1、数据库基础
1.1 事务的概念和特性
1.2 锁
1.3 锁协议
1.4 事务日志
1.5 MVCC实现原理
1.6 基础知识
1.6.1 三范式
1.6.2 多表连接方式
1.6.3 存储过程
1.6.4 TRUNCATE和DROP的区别
1.6.5 触发器
1.6.6 视图
2、MySQL
2.1 索引
2.2 索引组织表
2.3 InnoDB和MyISAM的区别
2.4 Checkpoint技术
2.5 宕机恢复原理
2.6 数据库优化
2.7 分库分表
2.8 一致性哈希算法
2.9 主从复制
3、Redis
3.1 概述
3.1.1 为什么Redis单线程还这么快
3.1.2 Redis数据类型
3.1.3 持久化机制
3.1.4 过期机制和内存淘汰策略
3.2 线程模型
3.3 分布式问题
3.3.1 Redis实现分布式锁
3.4 缓存异常
3.4.1 缓存击穿、缓存雪崩
3.5 高可用
3.5.1 主从复制
3.5.2 哨兵模式
3.5.3 集群模式
-
+
游客
注册
登录
TRUNCATE和DROP的区别
## 1 DELETE 1. 操作**可以针对 `table`**,**也可以针对 `view`**。 2. **仅删除表中的数据**。 3. **数据库操作语言**(DML),删除时是**每次从表中删除一行**,所以**会很慢**,操作会放到`rollback segment`,并且会将其**作为事务记录在日志中保存以便进行回滚操作**,**事务提交之后才生效**。 4. 如果有相应的**触发器**,**执行的时候会被触发**。 5. **不会减少表或索引所占用的空间**。 ## 2 TRUNCATE 1. **只能针对 `table`**。 2. **删除表中的所有行**,但**表结构**、**列**、**约束**、**索引等保持不变**,**新行标识所用的计数值重置为该列的种子**。 3. **数据库定义语言**(DDL),**操作立即生效**,**原数据不放到 `rollback segment`中**,**不能回滚**。 4. **操作不能触发触发器**。 5. **会将表和索引所占用的空间恢复到初始大小**。 6. **通过释放存储表数据所用的数据页来删除数据**,并且**只在事务日志中记录页的释放**。 7. 不能对以下表使用`truncate`: 1. **由 `FOREIGN KEY`约束引用的表**。 2. **参与索引视图的表**。 3. 通过**使用事务复制或合并复制发布的表**。 ## 3 DROP 1. **只能针对 `table`**。 2. **删除表结构**、**列**、**约束**、**触发器**、**索引**,**依赖于该表的存储过程和函数将被保留**,**但是会变为 `invalid`状态**。 3. **数据库定义语言**(DDL),**操作立即生效**,**原数据不放到 `rollback segment`中**,**不能回滚**。 4. **操作不能触发触发器**。 5. 会**将表占用的空间全释放掉**。 ## 参考文献 1. [Drop/Delete/Truncate的区别?](https://github.com/wolverinn/Waking-Up/blob/master/Database.md#DropDeleteTruncate%E7%9A%84%E5%8C%BA%E5%88%AB) 2. [SQL中drop、truncate和delete的区别](https://juejin.cn/post/6885253246865293325)。
ricear
2021年7月4日 16:31
©
BY-NC-ND(4.0)
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码