当前位置:首页>网站建设>正文

MySql数据库中InnoDB事务是什么意思

发布时间:2020-02-28 17:11:38 作者:小超越君

mysql中的事务(Transaction)是什么?有什么用?

简单来说,事务就是用户定义的一个数据库操作序列,这些操作要么全做要么全都不做,是一个不可分割的工作单位,一般是指要做的或所做的事情。我们也可以理解为事务是由一个或多个SQL语句组成,如果其中有任何一条语句不能完成或者产生错误,那么这个单元里所有的sql语句都要放弃执行,所以只有事务中所有的语句都成功地执行了,才可以说这个事务被成功地执行!

换言之,事务就是访问并更新数据库中各种数据项的一个程序执行单元,即一组同步执行且未提交的sql DML(insert、update、delete)语句,这是数据库操作的一个单元!

而且一般情况下一个事务对应着一个完整的业务,一段程序中也可能包含多个事务。比如说,工资转账、银行转账、商品购买等业务。

介绍到这里,大家对于mysql中的事务应该有了初步的了解了吧。

可能有朋友会问,事务有什么用?事务安全是什么?

MySQL 事务主要用于处理操作量大,复杂度高的数据。

事务安全: 为了保证一系列操作的结果保持同步,保证数据的完整性。

自动提交事务:每执行一条sql语句,就同步到数据库中。
手动提交事务:执行一系列的sql语句后一起同步到数据库中

我们可以举一个简单的例子来理解事务的作用,比如我们在淘宝进行购物(存在事务),当我们成功提交订单并在提示已经付完款时,突然断网,此时我们再刷新页面可以发现,显示已经成功付款。相反(没有事务),如果我们明明付过款了,就因为突然断网,再刷新页面时,就会显示重新付款!

通过这个简单的例子,大家对事务的作用肯定有了进一步的理解吧。

下面再给大家简单总结下,事务的特性,这个知识点在我们mysql面试题中也是非常常见的。

事务的特性(Transaction)

1、原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

2、一致性(Consistency):在一个事务中,事务前后数据的完整性必须保持一致,可以想象银行转账、火车购票。

3、隔离性(Isolation):多个事务,事务的隔离性是指多个用户并发访问数据库时, 一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。

4、持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

MYSQL 事务处理主要有两种方法:

1、用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交

对于一个MYSQL数据库(InnoDB),事务的开启与提交模式无非下面这两种情况:

1>若参数autocommit=0,事务则在用户本次对数据进行操作时自动开启,在用户执行commit命令时提交,用户本次对数据库开始进行操作到用户执行commit命令之间的一系列操作为一个完整的事务周期。若不执行commit命令,系统则默认事务回滚。总而言之,当前情况下事务的状态是自动开启手动提交。

2>若参数autocommit=1(系统默认值),事务的开启与提交又分为两种状态:

①手动开启手动提交:当用户执行start transaction命令时(事务初始化),一个事务开启,当用户执行commit命令时当前事务提交。从用户执行start transaction命令到用户执行commit命令之间的一系列操作为一个完整的事务周期。若不执行commit命令,系统则默认事务回滚。

②自动开启自动提交:如果用户在当前情况下(参数autocommit=1)未执行start transaction命令而对数据库进行了操作,系统则默认用户对数据库的每一个操作为一个孤立的事务,也就是说用户每进行一次操作系都会即时提交或者即时回滚。这种情况下用户的每一个操作都是一个完整的事务周期。

文章内容欢迎转载,请保留本文链接:https://www.zhe94.com/617.html

专注高端湛江网站建设及湛江SEO优化服务 立即咨询