数据库相关

时间:2022-04-23 07:45:19

数据库

 

事务:一系列操作统称事务;

 

事务的特性:原子性,一致性,隔离性,持久性

 

 

一致性:保证一个用户正在修改未提交时,其他用户读到的是修改前的临时表的数据。等提交后读到的是新数据,保证了数据库的一致性。

 

隔离性:

脏读

原因:主要针对select,用户A更改了数据并未提交,用户Bselect时候能查到用户A未提交的数据。

解决:设置隔离级别为读提交,利用快照读只读已经完成提交的数据。

 

不可重复读

原因:主要针对update,用户A查询了数据后,用户B更新了数据值,等用户A再次查询数据时发现两次数据值不一样。

解决:设置隔离级别为可重复读,利用快照读,A事务启动后不允许再修改数据,保证了可重复读,避免不了幻读

 

幻读

原因:主要针对insert delete,用户A查询了数据后,用户B插入了一条新数据或者删除了一条数据。等用户A再次读的时候发现数据数量两次不一样。

解决:设置隔离级别为串行化,一个一个的事务施行,执行效率极差,开销贼大。

 

 

索引的目的:

提高检索效率,单纯为检索而生

当一个表中有大量记录时,为表中的某一个字段建立索引,不用从头遍历整个表来查找,而是可以通过索引来快速查找。

索引会增加数据库存储空间,每次修改表数据时索引也要修改.

索引中不能包含空值的列,如果组合索引中有一个是空值那么整条索引都是无效的

 

唯一索引:索引对应的列是唯一的,不允许有空值

主键索引:

组合索引:索引中包含多个字段

 

 

连接查询:

左连接 left join

右连接 right join

内连接 inner join

全连接 full join