数据库的事务

一、什么是事务

        事务是一组操作序列,是数据库并发控制的基本单位。其执行的结果必须是数据库从一种一致性状态到另一种一致性状态。事务是逻辑上的一组操作,要么全部执行,要么都不执行

二、事务的特性

        原子性:事务是最小的执行单位,是不可再分的。事务的原子性保证动作要么全部执行,要么都不执行

        一致性:执行事务前后,数据保持一致。多个事务对同一个数据的操作结果是相同的

        隔离性:并发环境下,一个用户的事务不会被其他事务所干扰,各并发事务之间数据库是相互独立的。

持久性:事务一旦提交,对于数据库的影响是永久的,即使发生故障也不会影响当前数据库的状态。

三、脏读,不可重复读,幻读

脏读:某个事务更新一份数据,另一个事务进行读取,因为某些原因,前一个事务进行了回滚导致后一个事务读取的数据是错误的

不可重复读:一个事务的两次查询结果不一致;可能原因是两次查询中间含有其他事务的操作

幻读:事务读取数据的条目不一致。某一个事务读取数据,另一个事务对数据库中的数据进行了添加,此时前一个事务在读取数据会发现前后数据的数目不一致。

脏读,幻读强调多个事务,不可重复读说的同一个事务

脏读强调读取的内容,幻读强调读取的数量

四、事务隔离级别

为了保证事务四个特性的实现,数据库定义了四种不同的事务隔离级别:

READ-UNCOMMITTED(读未提交): 最低隔离级别,可能导致脏读,幻读,不可重复读

READ-COMMITTED(读已提交): 解决脏读,Oracle默认

REPEATABLE-READ(可重复读): 解决脏读,不可重复读,Mysql默认

SERIALIZABLE(可串行化): 最高隔离界别,解决所有

事务隔离级别基于锁机制实现,因此隔离级别越低,事务请求的锁越少

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值