DB事物

发布时间 2023-05-08 17:36:53作者: 宁宝儿


1.事物概念:一组逻辑操作单元 始数据从一种状态变换到另一种状态
事物处理:所有事物 都作为一个工作单元来执行 ,
即使出现了故障 都不能改变这种执行方式,
commint提交之后 这些修改就永久的保存下来
要么数据管理系统将放弃所有的修改,整个事物roollback 到最初状态

2.JDBC事物处理
数据一旦提交 就不可回滚

当一个连接对象被创建时 默认情况下是自动提交事物 不能回滚
关闭数据库连接 数据就会自动提交
JDBC程序中为了让多个 SQL 语句作为一个事务执行:
调用 Connection 对象的 setAutoCommit(false); 以取消自动提交事务
在所有的 SQL 语句都成功执行后,调用 commit(); 方法提交事务
在出现异常时,调用 rollback(); 方法回滚事务

 


3.事物的ACID
1.原子性 不可分割 都发生 要不都不发生 Atomicity
2.一致性 必须从一个一致性状态 到另一个 一致性状态 Consistency
3.隔离性 Isolation 一个事务不要影响另一个事物

4.持久性Durability 一个事务一旦提交 他对数据库的改变就是永久的


4数据库的并发问题
对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制,
就会导致各种并发问题:
1.脏读: 对于两个事务 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段。之后, 若 T2 回
滚, T1读取的内容就是临时且无效的。
2.不可重复读: 对于两个事务T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段。之后, T1再次
读取同一个字段, 值就不同了。
3.幻读: 对于两个事务T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的
行。之后, 如果 T1 再次读取同一个表, 就会多出几行。
数据库事务的隔离性: 数据库系统必须具有隔离并发运行各个事务的能力, 使它们不会相互影响, 避
免各种并发问题。
一个事务与其他事务隔离的程度称为隔离级别。数据库规定了多种事务隔离级别, 不同隔离级别对
应不同的干扰程度, 隔离级别越高, 数据一致性就越好, 但并发性越弱。