美文网首页
java面试知识总结----事务的理解

java面试知识总结----事务的理解

作者: 爱编程的凯哥 | 来源:发表于2019-03-12 07:42 被阅读4次

目标:

理解事务的概念,和实际应用理解

概念

事务是恢复和并发控制的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性

原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

实际问题理解

  1. :由于未加事务, 默认机制是更新会去主库更新,查询会去从库查询 ,如反复的执行更新再查询这样的逻辑,就会很大可能出现查询到的数据不是最新的(也就是主库还没来得及同步到从库)

解决办法1:将查询也加事务,强制让其也去主库查询,尽可能让更新和后面的查询在一个事务完成,避免出现去从数据库 数据查询延时问题。

  1. :避免事务太大,对大量数据集数据库操作的处理

解决办法:合并更新、插入操作,批量执行,并适当采用异步化的方式实现最终一致性,如:通过状态控制异步处理,最终一致性

  1. 事务处理中不要包含远程调用,远程连接等可能网络请求,防止因为网络的不可靠性,造成的事务过长,数据库卡死现象

相关文章

网友评论

      本文标题:java面试知识总结----事务的理解

      本文链接:https://www.haomeiwen.com/subject/dijquqtx.html