事务ACID特性

事务(transaction):(ACID)
 ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
A(Atomicity):原子性,意味着数据库中的事务执行是作为原子。即不可再分,整个语句要么全执行,要么全不执行
C(Consistency):一致性,即在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏
I(Isolation):隔离性,事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据
D(Durability): 持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

show variables like '%autocommit%'
手动关闭自动提交set autocommit=false;

虚拟表  临时表  物理表
在JAVA JDBC中事务的处理
将事务由自动改为手动connection.setAutoCommit(false);
try块根据情况进行connection.commit();将虚拟表里面的数据 持久化保存在物理表里面
出现异常,在catch块中connection.rollback();回滚到事务之前的状态,消灭虚拟表,因为虚拟表也要占据空间
一般在commit之后,rollback之后关闭资源(connection、preparestatement...)

begin;//开启事务
insert...
delete...
commit;//提交

数据库事务传播机制(Spring)
上一个事务没有提交的话,上一个事务的数据会在下一个新的事务中自动提交

数据库隔离级别机制:(级别越高,效率越低)
    
多个客户端,多个并发事务下 数据库使用的隔离级别机制不同 会对数据造成不同影响
    并发事务下:
        1.脏读(事务A读到事务B未提交的数据)
        2.不可重复读(在同一个事务中,不同时刻读到的数据不一样)
        3.幻读(查询的时候,突然出现很多新的数据)
    1.读未提交 read uncommitted  脏读、不可重复读、幻读
    2.读已提交 read committed  || oracle sqlserver  避免出现脏读,可能出现不可重复读、幻读
    3.可重复读 repeatable read || mysql  避免出现脏读、不可重复读,理论上有可能出现幻读(mysql添加了一种配置MVCC+next-key lock,避免了幻读),mysql默认级别
    4.串行化 serializable ( 最高级别  一次只能执行一个事务) 避免出现脏读、不可重复读、幻读 
设置数据库隔离级别机制:set globle transaction isolation level 1(2,3,4);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值