数据库基础知识面试题整理

1. 事务的ACID特性,如何实现,几个特性之间的关系

什么是事务?

事务的四个特性,ACID, 原子性,一致性,隔离性,持久就

2. 几种并发不一致

产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性

丢失修改 T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 一级封锁协议 事务 T 要修改数据 A 时必须加 X 锁,直到 T 结束才释放锁。

读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 二级封锁协议 在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。 可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那么就不能再加 S 锁了,也就是不会读入数据

不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 三级封锁协议 在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S 锁。 可以解决不可重复读的问题,因为读 A 时,其它事务不能对 A 加 X 锁,从而避免了在读的期间数据发生改变。

幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次 读取的结果不同。

3. 隔离级别 不同隔离级别的并发不一致 (针对隔离性提出来的)

读未提交

读提交

可重复读

串行化

MySQL默认是可重复读。

4. mysql的逻辑架构 一条语句的执行路径

5. explain的字段

6. mysql调优 索引的创建使用

联合索引

7. InnoDB的行锁

8. 意向锁

9. MVCC 原理 解决了什么问题

10. SQL 与 NoSQL 的比较

11. mysql 连接

12. 索引和B+树 原理优势

13. 红黑树 概念

14. 存储引擎的比较

InnoDB和MyISAM,前者是最新的,后者是旧的,所以下面的答案前面支持,后面不支持

是否支持行锁

是否支持外键

是否支持MVCC

InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。

MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

15. 主从复制,读写分离 过程

分布式部署。

16. 分表 水平切分垂直切分

17. mysql用的什么协议 有状态还是无状态

18. innoDB的架构

19. join 的底层原理

20. innoDB索引计算

经验分享 程序员 微信小程序 职场和发展