事务是什么?事务的4个特点(ACID),事务的开启与结束

Posted shsxt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务是什么?事务的4个特点(ACID),事务的开启与结束相关的知识,希望对你有一定的参考价值。

事务是指作为单个逻辑工作单元执行的一组相关操作。这些操作要求全部完成 或者全部不完成。使用事务是为了保证数据的安全有效。

事务有一下四个特点:(ACID

1、原子性(Atomic):事务中所有数据的修改,要么全部执行,要么全部不执行。

2、一致性(Consistence):事务完成时,要使所有所有的数据都保持一致的状态, 换言之:通过事务进行的所有数据修改,必须在所有相关的表中得到反映。

3、隔离性(Isolation):事务应该在另一个事务对数据的修改前或者修改后进行访问。

4、持久性(Durability):保证事务对数据库的修改是持久有效的,即使发生系统故障, 也不应该丢失。

当事务之间发生并发时有几个隔离级别。

 

 Oracle 默认的隔离级别是 read committed

丢失更新:两个事务同时存储, 一个存储 100 , 一个存储 200,最终可能至存储了 200 或者 100,那另一个的更新就没成功,即结果不为预想的 300

脏读:事务 T1 更新了一行数据,还没有提交所做的修改,T2 读取更新后的数据,T1 回滚,T2 读取的数据无效,这种数据称为脏读数据。

不可重复读:事务 T1 读取一行数据,T2 修改了 T1 刚刚读取的记录,T1 再次查询, 发现与第一次读取的记录不相同,称为不可重复读。

幻读:事务 T1 读取一条带 WHERE 条件的语句,返回结果集,T2 插入一条新纪录, 恰好也是 T1 WHERE 条件,T1 再次查询,结果集中又看到 T2 的记录,新纪录就叫 做幻读。

 

事务的开启自动开启于 DML insert delete update

事务的结束

1) 成功

2) 失败 rollback ,手动回滚  

非法退出 意外的断电l

rollback 只能对未提交的数据撤销,已经 Commit 的数据是无法撤销的,因为 commit 之后已经持久化到数据库中。

 

 

添加数据 可以手写也可以从别的表中获取的);àinsert into 表名 values(和表结构顺序和个数和类型一致的数据 insert into 表名(指定列名) values(和指定的列个数、顺序、类型一致的列数据)

 

update 表名 set 字段=[,....] where 过滤行记录;

 

delete [from] 表名 where 过滤行记录

 

转自尚学堂学员的Java面试准备笔记--陆同学,上海尚学堂Java培训24期学员,已经入职上海企业,月薪11K起步。

 

以上是关于事务是什么?事务的4个特点(ACID),事务的开启与结束的主要内容,如果未能解决你的问题,请参考以下文章

mysql事务

数据库事务机制ACID

关系型数据库事务的ACID特性与实现

Mysql事务,并发问题,锁机制

数据库之 事务

关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?