数据库事务

数据库事务

一、概念
数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

二、四大特性
事务的ACID特性是由关系数据库系统(DBMS)来实现的,DBMS采用日志来保证事务的原子性、一致性和持久性。日志记录了事务对数据库所作的更新,如果某个事务在执行过程中发生错误,就可以根据日志撤销事务对数据库已做的更新,使得数据库回滚到执行事务前的初始状态。
1、原子性
事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。
2、一致性
几个并行执行的事务,其执行结果必须与按某一顺序 串行执行的结果相一致。
3、隔离性
事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
4、持久性
对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障,除非有另外一个事务 改变或者开启之前保存的状态。

三、事务的开启与关闭
start transaction; 事务开始
commit;提交 结束事务。
rollback; 回滚 从开始到 对数据库所作的修改 回复到修改前的状态

四、四大隔离级别
在这里插入图片描述五、隔离级别的修改
在mysql中查询隔离级别:select @@tx_isolation;
修改隔离级别:set transaction isolation level repeatable read;或:set tx_isolation=‘repeatable-read’;
设置数据库的隔离级别一定要是在开启事务之前;
如果是使用JDBC对数据库的事务设置隔离级别的话,也应该是在调用Connection对象的setAutoCommit(false)方法之前。
隔离级别的设置只对当前链接有效。对于使用MySQL命令窗口而言,一个窗口就相当于一个链接,当前窗口设置的隔离级别只对当前窗口中的事务有效;对于JDBC操作数据库来说,一个Connection对象相当于一个链接,而对于Connection对象设置的隔离级别只对该Connection对象有效,与其他链接Connection对象无关。
在JDBC中设置隔离级别的部分代码:
在这里插入图片描述六、隔离级别不同会出现的问题
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值