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 事务的更多相关文章
- Maria DB数据库基础知识
Maria DB连接 与MariaDB建立连接的一种方法是在命令提示符下使用mysql二进制文件. Maria DB命令行登录数据库服务: mysql -u root -p -- 换行输入密码 上面给 ...
- MySQL/MariaDB中的事务和事务隔离级别
本文目录:1.事务特性2.事务分类 2.1 扁平事务 2.2 带保存点的扁平事务 2.3 链式事务 2.4 嵌套事务 2.5 分布式事务3.事务控制语句4.显式事务的次数统计5.一致性非锁定读(快照查 ...
- 详解MariaDB数据库的事务
1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句 ...
- 【RDB】MariaDB 之事务、复制、集群
目录 简介 安装启动 权限 事务 脏读.不可重复读.幻读 MVCC 复制 异步复制 半同步复制 GTID复制 集群(Galera) 配置 监控(Zabbix) 简介 环境: CentOS 7.4.17 ...
- MySQL/MariaDB数据库的事务和隔离级别
MySQL/MariaDB数据库的事务和隔离级别 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.事务概述 1>.事务Transactions 一组原子性的SQL语句 ...
- mariadb数据库(3)连接查询,视图,事务,索引,外键(优化)
--创建学生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20 ...
- Mariadb之事务隔离级别
上一篇我们聊到了mariadb的锁,以及怎么手动加锁和解锁等等,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13196905.html:今天我们来聊一聊mar ...
- MariaDB第四章:视图,事务,索引,外键--小白博客
视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结 ...
- mariadb 视图 事务 索引 外键
视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表 ...
随机推荐
- JAVA——不简单的fianl关键字
protected用来修饰 域,代表域的访问权限是:包权限 或者 不同包,但是是子类 : final 修饰常量只要是该常量代入的计算式,在编译时期,就会被执行计算,以减轻运行时的负担.(只对基本数据类 ...
- struts2 使用json
前台代码: Struts.xml: UserAction: 注意: 1)struts类库里面没有提供ezmorph-1.0.6.jar文件,所以要手动添加:
- Go语言 之产生随机数
package main import ( "fmt" "math/rand" "strconv" "time" ) f ...
- lua 之 三木运算符
在c语言中我三目运算符这么写: a?b:c 例如: max = a>b?a:b; 在lua中我们这么写 max = a>b and a or b 运行如下:
- IO 双引号 输出 输入
#! /usr/bin/perl use strict;use warnings; print "\n---------<STDIN>_store_into_an_array_a ...
- No-2.注释
01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到 ...
- 查找BUG的方法
1)测试环境 1)代码调试 2)问题重现 3)思考问题所在 2)生产环境 1)思考 2)测试本地环境是否存在问题 3)打开日志查看 4)思考是否是数据原因 5)拷贝数据到本地进行重现 3)未知错误 1 ...
- PS学习一
1.使用缩放工具时是对文档窗口进行的缩放,它只影响视图比例:而对图像的缩放则是指对图像文件本身进行的物理缩放,它会使图像的内容变大或变小. 2.分辨率是指单位长度内包含的像素点的数量,它的单位通常为像 ...
- Kvm:通过 libvirt 远程管理虚拟机
1.通过qemu+ssh方式 2.通过qemu+tcp方式 主控端需要安装相关工具包: #yum groupinstall "Virtualization" #yum instal ...
- linux下mysql的安装与使用
一.mysql的安装 之前搭建linux下项目的发布,最后遗留的问题时数据库的迁移,如何从windows上迁移到linux上?这里首先进行mysql数据库的安装 1.下载mysql安装包 在这里下载的 ...