Mariadb 事务

Posted myxxjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mariadb 事务相关的知识,希望对你有一定的参考价值。

事务

事务具有ACID特性:原子性(A,atomicity)、一致性(C,consistency)、隔离性(I,isolation)、持久性(D,durabulity)。

1、原子性:事务内的所有操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

2、一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态(在前面的例子当中,一致性确保了,即使在执行第三、四条语句之间系统崩溃,支票账户也不会损失200美元,因为事物最终没有被提交,所以事物中所做的修改也不会保存到数据库中)

3、隔离性:一个事务所做的修改在最终提交之前,对其他事务是不可见的(在前面的例子中,当执行完第三条语句、第四条语句还未开始时,此时有另外一个账户汇总程序开始运行,则其看到的支票账户的余额并没有被减去200美元。)

4、持久性:事务完成后,该事务内涉及的数据必须持久性的写入磁盘保证其持久性。当然,这是从事务的角度来考虑的的持久性,从操作系统故障或硬件故障来说,这是不一定的。

验证隔离性;( 开启事务,模拟转账的环境)

1>创建一个表并加入数据

 技术图片

2>查看事务变量     (  show variables   可以用来查看系统变量)

 技术图片

on : 自动提交事务

3>开启事务 ( 两种方式 begin;         start   transaction;)   开启事务不会自动提交,操作处于内存当中

 技术图片

4>模拟转账

 技术图片

$

 技术图片

5>再看一个终端查看

 技术图片

&开启事务并模拟转账

 技术图片

会发现一直卡着,直到报错

这是因为 事务的隔离性, 相互是不可干扰

6> 关闭事务 ( 写到了 磁盘上)

 技术图片

7>查看

 技术图片

#查看 另一个终端

 技术图片

为什么没变? 因为此时还处于事务当中,需要结束事务

 技术图片

&模拟转账断电

1>开启事务

技术图片

2>转账

 技术图片

3> 模拟断电

 技术图片

4>再次进入数据库

 技术图片

5>查看

 技术图片

会发现转出去的又回来了, 这是因为,从begin 开始这已经是一个事务, 要么就全部执行成功,要么有一个失败全失败。

失败后于做了一次回滚 ( rollback)( 相当于咱们什么都没操作)

6>这时候则需要人为 来调整下

 技术图片

注: 结束事务有两种方法,commit ;   rollback;(回滚)

补充:

&1

技术图片

这里默认 ON       在不开启  begin 的情况下 每执行一条seq 语句都会自动提交事务

改变它的默认参数

&1永久方法

编辑配置文件 

vim  /etc/my.cnf.d/server.cnf

 技术图片

0  : 关闭

重启数据库并查看

 技术图片

&2临时修改

set  xxxx = 0

补充2: show variables ;

查看系统变量 ( 参数)

 

以上是关于Mariadb 事务的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB和mySQL到底区别在哪,实验说明问题!

BottomNavigationView 滞后于片段事务

MariaDB与MySQL对比 --- 对分布式事务的支持

mysql/mariadb知识点总结 之 事务总结

MySQL/MariaDB中的事务和事务隔离级别

初识MariaDB之3——MariaDB备份与还原