事务
事务ACID特性
事务是逻辑上的一组操作同时执行或者不执行。比如A给B一百块钱,这背后的逻辑就是A的余额少了一百块,B的余额多了一百块,两个操作如果没有同时进行,就会出现问题。
A原子性:事务是最小的工作单元。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
C一致性:在同一个事务当中,所有操作必须同时成功,不会结束在中间某个环节。
I隔离性:操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
D持久性:事务提交,即把“没有保存到硬盘上的数据”保存到硬盘上
事务隔离级别
读取未提交:最低隔离级别,允许读取尚未提交的数据,存在脏读、不可重复读、幻影读
读取已提交:允许读取已经提交的数据,存在不可重复读、幻影读
可重复读:对同一字段的多次读取结果都一致,除非数据是事务本身所修改的,存在幻影读
可串行化:最高隔离级别,完全符合ACID特性,
脏读:事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的,通常针对UPDATE
不可重复读:事务T1读取某一数据,事务T2读取并修改了该数据,T1再次读取该数据,得到了不同的结果
幻影读:第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好像发生了幻觉一样
索引
索引定义,优缺点
索引是在字段上添加的,负责缩小扫描范围,提高查询效率。主键上、unique字段上都会自动添加索引。当数据量庞大,经常出现在where后面,很少进行增删改操作的时候就可以添加索引。
优点是加快数据的检索效率,加速表与表的连接
缺点是索引需要占用物理空间
事务
隔离级别
索引
红黑树
B+树
关系型数据库和非关系型
数据库三级模式
文件系统与数据库
数据库完整性