事务
什么是事务
- 逻辑上的一组操作,要么执行,要么不执行
事务的特征
- ACID,原子性、一致性、隔离性、持久性
- 原子性:最小执行单位,不允许分割
- 一致性:执行前后,数据保持一致
- 隔离性:并发访问时,多个事务之间应该隔离
- 造成对数据库的影响是持久的
并发事务带来的问题
- 脏读、幻读、不可重复读、更新丢失
- 脏读:事务读取未被提交的数据
- 幻读:事务读取时发现多了或少了数据,发生在另一个事务对表进行insert或者update
- 不可重复读:事务A读取了数据,事务B修改了该数据,事务A不能读取同一数据
- 更新丢失:数据库仅保存最后一个事务修改的数据
事务隔离级别
- 读未提交、读已提交、可重复读、可串行化
\ | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交 | 有 | 有 | 有 |
读已提交 | 无 | 有 | 有 |
可重复读 | 无 | 无 | 有 |
可串行化 | 无 | 无 | 无 |
数据库引擎
MyISAM与InnoDB的区别
- 前者不支持事务和行级锁,只支持表级锁;后者支持事务、行级锁、表级锁
- 前者崩溃后无法安全恢复后者可以安全恢复
- 前者不支持外键,后者支持
- 前者叶节点存放的是数据地址,后者叶节点存放的是数据内容,可以是整行数据,也可以是主键
- 前者支持非聚集索引,后者支持聚集索引
索引
什么是索引
- 一种数据结构,能够帮助我们快速检索数据库中的数据
索引的类型
- 普通索引、唯一索引、主键索引、全文索引、多列索引
Hash索引与B+索引的区别
- Hash索引不支持范围查询、顺序查询,而B+树支持
- 在冲突不大的情况下,Hash索引的检索效率高于B+树
- Mysql中InnoDB引擎默认使用B+树
MySQL面试知识点
区分操作
Delete、truncate、drop
- Delete删除数据,不释放空间、不删除表结构
- Truncate删除数据、释放空间、不删除表结构
- Drop删除数据、释放空间、删除表结构