数据库小结(面试)

来源:互联网 发布:淘宝店怎么找上家 编辑:程序博客网 时间:2024/06/04 19:09
数据库总结:

一、设计表三大范式:

1NF:列的原子性;数据表的每一列保证原子性,即不可拆分

2NF:在1NF的基础上,必须要有主键,且其他列必须完全依赖主键,而不是依赖主键的一部分

3NF:在2NF的基础上,其他列必须直接依赖不能间接依赖或传递依赖

二、事务:
1、常见操作,创建事务,提交事务,回滚事务
2、特性:ACID
    
原子性:每个事务要么一起成功,要么一起失败

一致性:事务操作数据库的前后保证数据整体的一致性

隔离性:并发执行的事务彼此隔离,不不干扰

持久性:事务对数据库的修改为永久的

3、并发问题:脏读,幻读,不可重复读

脏读:a事务在执行过程中未提交,b事务读取到了a事务执行过程中的数据,最后a事务回滚

幻读与不可重复读:幻读和不可重复读都是提交了上一条事务已经提交的结果,不可重复读重点在于delete和update,幻读在于insert

4、隔离级别:读未提交,读已提交,可重复读,串行化

读未提交(最低级别):任何情况都无法保证

读已提交:可避免脏读的发生

可重复读:可避免脏读和不可重复读

串行化(最高级别):能够避免脏读,幻读,不可重复读

三、锁

1、锁模式:共享锁(读所),排它锁(写锁,x锁),更新锁(u锁)

2、锁的粒度类型:

行锁粒度大,并发性最高
页锁:一次锁定一页
表锁:粒度小,并发性低
数据库锁:控制整个数据库的操作

3、乐观锁与悲观锁

乐观锁:假设不会冲突,每次访问数据库携带一个版本信息,所以在相应数据表就要加一个版本信息字段,用于判断是否执行更新操作,一般如果版本信息低于相应数据的版本信息,则不允许更新,反之,则允许更新

悲观锁:一定会冲突,因此是完全隔离的操作,每次对数据库进行更新,拿到锁,则转换为完全占有的状态,不允许其他人访问




原创粉丝点击