数据库介绍
数据库:存放数据的仓库,按照数据结构,来组织、管理和存储数据,并提供了增、删、改、查的功能
数据库的分类:数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。不同的数据库是按照不同的数据结构来联系和组织的。当前主流数据库主要是两种,即关系型数据库和非关系型数据库。
数据库事务
事务的定义
将一组有序的增、删、改操作当做一个独立的执行单元,如果都成功事务执行成功,如果有一个操作失败事务执行失败,会执行回滚操作。
事务的特性
- 原子性:事物被当做一个不可分割的执行单元,要么全部成功,要么 全部失败,成功则将数据应用到数据库,失败不会对数据产生影响。
- 一致性:开始事物前的状态必须和事物执行之后的状态保持一直。
- 隔离性:当用户并发访问数据库时,数据库会给每个用户线程开启一个事物,事物和事物之间相互隔离,互不影响。
- 持久性:一旦事物提交,那么数据就会永久行的应用于数据库,就算机器出现故障,也不会将数据修改 。
事务回滚
事物作为一个独立不可分割的执行单元,要么都成功,只要这一组操作中有一个失败,事物会执行回滚,恢复到事物执行之前的状态
事务的四种隔离级别
- Read uncommitted(读未提交):低级别,可能会出现任何情况
- Read committed:(读已提交): 可以避免脏读
- Repeatable read:(可重读):可以避免脏读和不可重复度
- Serializable:(串行化):可避免 脏读 不可重复读 幻读 最高的隔离级别
在不考虑事务的隔离性的情况下,会导致以下情况
- 脏读:事务A读到了事务B未提交的数据。
- 不可重复读:事务A第一次查询得到一行记录row1,事务B提交修改后,事务A第二次查询得到row1,但列内容发生了变化。
- 幻读:事务A第一次查询得到一行记录row1,事务B提交修改后,事务A第二次查询得到两行记录row1和row2。