数据库--Mysql、Oracle数据库事务及ACID

吾日三省贾斯汀 发表于 2021/09/09 23:41:31 2021/09/09
【摘要】 目录 一、什么是事务? 概念 生活场景 二、事务的四大特性(ACID)? 原子性(Atomic) 一致性(Consistence) 隔离性(Isolation) 持久性(Durability) 三、事务的分类? 隐式事务 显式事务 一、什么是事务? 概念 事务是指单个逻辑工作单元执行的一系列操作,用于保证数...

目录

一、什么是事务?

概念

生活场景

二、事务的四大特性(ACID)?

原子性(Atomic)

一致性(Consistence)

隔离性(Isolation)

持久性(Durability)

三、事务的分类?

隐式事务

显式事务


一、什么是事务?

概念

事务是指单个逻辑工作单元执行的一系列操作,用于保证数据的安全有效.要么完全地执行,要么完全地不执行;

SQL语句就是自身的一个事务。SQL语句有:DML/DDL/DCL/TCL

生活场景

我转账给别人,要么我转账成功,别人收款成功。要么我转账失败,别人收款失败。

 

二、事务的四大特性(ACID)?

原子性(Atomic)

概念:事务中所有数据的修改,要么全部执行,要么全部不执行;

理解:不可再分的。

 

一致性(Consistence)

概念:事务完成时,要使所有数据都保持一致的状态。

理解:不管谁操作了数据库,数据在数据库中的状态是一致的,大家看到的结果是一致的。

 

隔离性(Isolation)

概念:事务应该在另一个事务对数据的修改前或修改后进行访问。

理解:A操作的时候,不影响B,A在commit之前,可以看到修改后的结果,B看不到。

比如我要向数据库中添加一条数据,那么你想要查询数据中的数据,就应该在我添加这条记录之前或者添加之后,再查询数据库的数据。

要是你在我添加记录进行时去查询数据,在我没有commit之前,我是可以看到数据库中已经有我添加的记录了,但是你是看不到的。这个就体现了事务的隔离性。

也就是说只有在我commit之后,添加的记录才会被持久化到数据库当中,在commit之前,是可以通 过rollback进行撤销添加的。

 

持久性(Durability)

事务一旦提交,也就是commit之后,对数据库的修改是持久有效的,即使发生系统故障,也不应该丢失。

 

三、事务的分类?

隐式事务

理解:数据库(SQL/ORACLE)自动帮我们处理事务(自动提交事务)。

SET AUTO COMMIT ON (只针对一个连接);

以下情况自动提交事务:

正常执行完成的DDL语句:create、alter、drop、delete...

正常执行完成的DCL语句:grant、invoke...

正常退出的客户端工具:SQL Plus、SQL Developer、PL/SQL Developer

显式事务

理解:自己来处理事务(手动提交事务)

关键字

BEGIN TRANSACTION 表示一个事务要开始了。

COMMIT TRANSACTION 表示从begin(事务开始)后的所有修改都被持久化到数据库中。

ROLLBACK TRANSACTION 表示从begin(事务开始)后的所有修改都会被还原。

SAVEPOINT TRANSACTION SAVE_NAME 表示在事务中设置保存点SAVE_NAME(保存点名称)

ROLLBACK TRANSACTION SAVE_NAME 表示可以rollback回滚到SAVE_NAME(保存点名称)

 

PS:

显式事务是需要我们显式(手动)调用TCL(事务控制语言)语句;

当我们commit之后,对数据的修改才真正的持久化到数据库中,在commit之前,可以通过rollback撤销修改的。

 

SQL语句之DDL、DML、DCL、TCL区别?点击了解~

 

文章来源: blog.csdn.net,作者:吾日三省贾斯汀,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/JustinQin/article/details/77877733

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。