
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
事务是软件开发程序员在学习数据库架构应用的时候需要重点掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,数据库事务概念与常见类型。
一、什么是数据库事务
1、事务Transaction(简写tx):
在数据库中,事务是指一组逻辑操作,无论成或败,都作为一个整体进行工作,要么全部执行,要么全部不执行。
2、事务的ACID特性:
①原子性:事务是不可分割的小工作单元,事务内的操作要么全做,要么全不做。
②一致性:事务必须使数据库从一个一致性状态变成另外一个一致性状态。事务开始和完成,数据必须保持一致。(数据不被破坏)【'数据守恒'】
③隔离性:当多个事务处于并发访问同一个数据库资源时,事务之间相互影响程度,不同的隔离级别决定了各个事务对数据资源访问的不同行为。
④持久性:事务一旦提交后,数据是永久性的、不可回滚。(数据的修改是永久的)。
二、数据库并发问题
1、数据库的事务并发问题:多个事务并发访问/修改同一个资源
跟java中的线程问题---并发问题差不多,都是针对同一资源,同时访问/修改出现的问题。
2、事务并发可能导致的问题【丢失更新、脏读、幻读、不可重复读】
(1)一类丢失更新:
撤销rollback一个事务时,把其他事务已经提交更新的数据回滚掉了。
(2)二类丢失更新:
提交commit一个事务时,把其他事务已经提交更新的数据覆盖掉了。
(3)脏读:
A事务未提交,但是B事务却读取到A事务的结果【读取到了B事务未提交的结果】(破坏隔离性)
(4)幻读:
A事务在本次事务中,对自己未操作过的数据(B事务insert了一些数据),A事务进行两次读取,发现一次读取时,记录不存在,二次读取,记录出现了(破坏一致性,insert)
(5)不可重复读:
跟幻读类似,A事务在本次事务中,对自己未操作过的数据(B事务update/delete了一些数据),A事务进行两次读取,发现两次读取的记录值不同(破坏一致性,update/delete)
三、事务类型
按服务器数量分,本地事务和分布式事务:
本地事务:就是普通事务,能保证单台数据库上的操作的ACID,被限定在一台数据库上;
分布式事务:涉及多个数据库源的事务,即跨越多台同类或异类数据库的事务(由每台数据库的本地事务组成的),分布式事务旨在保证这些本地事务的所有操作的ACID,使事务可以跨越多台数据库;
在java中有,JDBC事务和JTA事务:
JDBC事务:就是数据库事务类型中的本地事务,通过Connection对象的控制来管理事务;
JTA事务:JTA指(JavaTransactionAPI),是JavaEE数据库事务规范,JTA只提供了事务管理接口,由应用程序服务器厂商提供实现,JTA事务比JDBC更强大,支持分布式事务。
在项目中实现事务,声明式事务和编程式事务:
编程式事务:通过编写代码来管理事务。
声明式事务:通过注解或XML配置来管理事务。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。