首页 > 资讯 > 宏观 > 正文

世界热点评!面试题锦集:1、数据库三大范式,2、mysql索引类型及作用,3、事务的特性和隔离级别

2023-04-03 17:27:14来源:博客园  

目录面试题集锦一、数据库三大范式二、mysql有哪些索引类型及作用三、事务的特性和隔离级别1、事务的四大特性2、事务的隔离级别3、什么是脏读、不可重复度、幻读4、解决办法
面试题集锦
一、数据库三大范式

第一范式(1NF):


(相关资料图)

指数据库中表的每一列都是不可分割的最小单位

# 分割前:地址安徽省合肥市蜀山区# 分割后: 省  | 市  |  区安徽省|合肥市|蜀山区

第二范式(2NF):

如果表是单主键,那么主键以外的列必须完全依赖于主键列,如果表是符合主键(联合索引),那么主键以外的列必须完全依赖于主键,而不是主键的一部份

第三范式(3NF):

表中的非主键列必须直接依赖于主键列,而不是间接依赖于主键,也就是说非主键列不能间接依赖于主键列,出现这种情况应该在建立一张关联表而不是存放在一张表中

二、mysql有哪些索引类型及作用

首先先说一下什么是索引及索引的作用

在关系型数据库中,给一个或多个字段(联合索引)设置索引,可以加快数据检索(类似于目录),达到快速查找的作用

普通索引:

允许该字段出现重复的值,且可以为空

唯一索引:

不允许该字段出现重复值,且不可以为空

主键索引:

非空且唯一,在不主动生成的情况下数据库会默认生成一个字段为主键(一般是id字段),非空且唯一

联合索引:

多个字段联合唯一

全文索引:

所有字段都作为索引条件,一般用的比较少,如果删除或修改字段可能照成B树结构改变,在数据量庞大的情况下不建议使用(主要根据业务逻辑来判断是否使用)

三、事务的特性和隔离级别1、事务的四大特性

原子性(Atomicity):

事务一旦提交,要么全部成功,要么全部失败

隔离性(Isolation):

事务之间相互隔离,不受影响

一致性(Consistency):

一个事务开启后,在这个事务中多次查询数据的结果都必须是一致的

持久性(Durable):

事务一旦提交,对数据的影响是永久的,不可回滚

2、事务的隔离级别

未提交读(READ UNCOMMITTED):

事务的最低级别,会造成脏读、不可重复读、幻读

已提交读(READ COMMITTED):

该级别解决了脏读,但不可重复读和幻读任然存在

可重复度(REPEATABLE READ):

该级别是mysql5.7版本后默认的事务级别,该级别解决了脏读、不可重复度

串行化(SERIALIZABLE):

事务的最高级别,解决了脏读、不可重复读、幻读,该级别极大的保证了数据的安全性,缺点是无并发可言

事务的隔离级别脏读不可重复读幻读
未提交读(READ UNCOMMITTED)
已提交读(READ COMMITTED)-
可重复度(REPEATABLE READ)--
串行化(SERIALIZABLE)---
3、什么是脏读、不可重复度、幻读

脏读:

指A在事务的过程中可以读取到B修改单位提交的数据

不可重复度:

指在同一个事务中,多次读出数据,出现数据不一致的情况,这种情况通常是update和delete(数据前后不一致或开始时候读取存在,后来就消失了)

幻读:

很多人会把幻读和不可重复读混淆,幻读指在同一个事务的过程中,多次读取数据时,出现了新的数据(insert)

4、解决办法

机制锁:

ru:最低级别,不加锁rc:开启事务时加行级锁,读到的时候加锁,读取完毕释放锁rr:开启事务时加行级锁,关闭事务时释放se:开启事务加表锁,关闭事务释放锁

MVCC机制:

保存某个时间上的数据快照

标签:

相关阅读

404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx

相关词

推荐阅读