目标:
理解事务的概念,和实际应用理解
概念
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
实际问题理解
- :由于未加事务, 默认机制是更新会去主库更新,查询会去从库查询 ,如反复的执行更新再查询这样的逻辑,就会很大可能出现查询到的数据不是最新的(也就是主库还没来得及同步到从库)
解决办法1:将查询也加事务,强制让其也去主库查询,尽可能让更新和后面的查询在一个事务完成,避免出现去从数据库 数据查询延时问题。
- :避免事务太大,对大量数据集数据库操作的处理
解决办法:合并更新、插入操作,批量执行,并适当采用异步化的方式实现最终一致性,如:通过状态控制异步处理,最终一致性
- 事务处理中不要包含远程调用,远程连接等可能网络请求,防止因为网络的不可靠性,造成的事务过长,数据库卡死现象
网友评论