后端开发面试总结——数据库篇

最近在准备后端开发校招面试,写一份总结,整理一下自己的思路,帮助自己记忆。

数据库篇

1.数据库的三大范式

   第一范式:列不可再分  第二范式:非主属性只能依赖于唯一主键,而不能依赖于其他主键 第三范式:非主属性只能依赖于主键

  数据库设计必须遵守三大范式,除非是为了平衡,例如追求性能。

2.数据库索引的方式

 2.1 hash索引

     hash索引,根据hash确定出索引的位置 ,hash方法只支持精确查找,不支持范围查找。

2.2 b+树索引

     b+树索引底层构建一颗b+树,支持精确查找和范围查找。

     b+树索引包括聚集索引、辅助索引、联合索引、覆盖索引。

聚集索引:数据即索引、索引即数据

辅助索引:索引在数据之外

联合索引:多列的索引

覆盖索引:   指所要查找的数据都在索引中,调用索引即可,而无需回表操作。

2.3 全文索引

   先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search) 

3.数据库事务

  数据库的事务指对数据库的一组操作,或者一组指令。这些指令要么都执行,要么都不执行,不能被打断。

  数据库的事务具有ACID四种特性 即原子性、一致性、隔离性和持久性。

  原子性指这些操作是原子的,作为一个整体,要么都执行,要么都不执行。

 一致性指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。

  隔离性指在并发环境中,并发的事务时相互隔离的,一个事务的执行不能不被其他事务干扰。

  持久性是指事务对数据库的修改是持久的,对数据库的状态的影响永久保存到数据库中。

4.数据库事务的隔离级别

(由低到高)未提交读、已提交读、可重复读、串行化

5.数据库乐观锁和悲观锁

乐观锁认为数据库在读写过程中不会出现脏数据,要求较为宽松,一般为记录加上version字段

悲观锁认为数据库在读写过程中会出现脏数据,要求较为严格,使用select…for update会把数据给锁住

要注意悲观锁中锁的类型。

6.MyISAM和InnoDB的区别

 1.是否支持事务:MYISAM不支持事务、InnoDB支持事务

 2.锁粒度:MYISAM是表级锁,InnoDB支持行级锁

 3.索引: InnoDB是聚集索引,MyISAM是非聚集索引

 4.InnoDB支持外键、InnoDB支持MVCC

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章