数据库基础概念
数据库:
存储数据的仓库,按照数据结构,来组织,管理和存储数据,并提供了增删改查的功能。
数据库的建模:用来描述业务实体之间的关系
事务:
将一组增删改的操作看成一个独立的执行单元,要么都成功,如果有一个操作失败,那么数据库会执行回滚,一组操作都不会生效。
事务的特性:
原子性:事务被当做一个不可分割的执行单元,要么全部成功,要么全部失败,成功则将数据应用到数据库,失败不会对数据产生影响。
一致性:开始事务前的状态必须和事务执行后的状态保持一致。
隔离性:当用户并发访问数据库时,数据库会对每个用户线程开启一个事务,事务和事务之间相互隔离互不影响。
持久性:一旦事务提交,那么数据就会永久性的应用于数据库,就算机器出现故障,也不会将数据修改。
事务的回滚
事务作为一个独立的不可分割的执行单元,要么都成功,只要这一组操作中有一个失败,事务会执行回滚,恢复到事务执行之前的状态。
在不考虑事务隔离性的情况下,会导致以下情况
脏读:
当一个事务执行时,访问并使用了另一个未提交事务的数据。
不可重复读:
当一个事务多次重复读取一条数据时,另一个事务对该条数据做出了修改,导致前一事务多次读取的数据不一致。
幻读:
一个事务读取一张表中的所有数据,另一事物在该表中增/删了一条数据,导致前一事务的结果与实际结果不符。
事务的四种隔离级别
read uncommit :读未提交,最低级别,可能出现任何情况。
read commit:读已提交,壳避免脏读。
repeatable read:可重复读,可避免脏读和不可重复读。
serializable:串行化,最高级别,可避免脏读,幻读和不可重复读。