MySQL学习【第十一篇存储引擎之事务解释】
一.innodb的核心特点------事务
1.什么是事务
在一组数据操作执行步骤,这些步骤被视为一个单元,主要针对dml语句(update、delete、insert)
2.事务ACID特性
Atomic(原子性)
所有语句作为一个单元全部成功执行或全部取消。
Consistent(一致性)
如果数据库在事务开始时处于一致状态,则在执行该。
事务期间将保留一致状态。
Isolated(隔离性)
事务之间不相互影响。
Durable(持久性)
事务成功完成后,所做的所有更改都会准确地记录在
数据库中。所做的更改不会丢失。
3.事务的控制语句
START TRANSACTION(或 BEGIN):显式开始一个新事务
SAVEPOINT:分配事务过程中的一个位置,以供将来引用
COMMIT:永久记录当前事务所做的更改
ROLLBACK:取消当前事务所做的更改
ROLLBACK TO SAVEPOINT:取消在 savepoint 之后执行的更改
RELEASE SAVEPOINT:删除 savepoint 标识符
SET AUTOCOMMIT:为当前连接禁用或启用默认 autocommit 模式
4.事务演示
成功事务 mysql> begin; mysql> insert into stu(id,name,sex,money) values(1,'zhang3','m',100), (2,'zhang4','m',110); mysql> commit; 事务回滚 mysql> begin; mysql> update stu set name='zhang3'; mysql> delete from stu; mysql> rollback;
6.事务自动提交
#查看自动提交 mysql> show variables like 'autocommit'; #临时关闭 mysql> set autocommit=0; #永久关闭 [root@db01 world]# vim /etc/my.cnf [mysqld] autocommit=0
5.事务隐式提交情况
a)现在版本在开启事务时,不需要手工begin,只要你输入的是DML语句,就会自动开启事务。
b)有些情况下事务会被隐式提交
如下:
在事务运行期间,手工执行begin的时候会自动提交上个事务
在事务运行期间,加入DDL、DCL操作会自动提交上个事务
在事务运行期间,执行锁定语句(lock tables、unlock tables)
load data infile
select for update
在autocommit=1的时候
7.事务日志redo基本功能
a( redo是什么
redo,顾名思义“重做日志”,是事务日志的一种。
b( 作用是什么
在事务ACID过程中,实现的是“D”持久化的作用。
特性:WAL(Write Ahead Log)日志优先写
REDO:记录的是,内存数据页的变化过程
- 厚土Go学习笔记 | 34. 一个简单的 web 服务器实现
- sqlplus / as sysdba无法登录的奇怪报错 (r8笔记第36天)
- JSP与EL表达式重点学习笔记(1)
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- JSP与EL表达式重点学习笔记(2)
- Node.js真的无所不能?那些不适用的应用领域分析
- #!/bin/bash 与#!/bin/sh
- 客户端无法连接数据库的小问题(r8笔记第53天)
- Golang事务模型
- 厚土Go学习笔记 | 35. web服务器实现动态路径
- 数据库连接池、dbutil_知识点全掌握
- Golang 序列化之 ProtoBuf
- Golang RPC 之 gRPC
- 解决连通性问题的四种算法
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Centreon+Nagios实战第八篇——Nagios+Centreon添加监控服务
- Centreon+Nagios实战第九篇——利用nrpe插件监控本机
- 第四篇 CentOs7下安装Zabbix
- 第十三篇 zabbix创建Item
- 第十四篇 zabbix创建自定义Item
- 【性能】688- 前端性能优化——从 10 多秒到 1.05 秒
- 第十六篇 zabbix创建Trigger
- 如何通过程序(java代码)提高你的博客访问量
- zabbix_get [12429]: Check access restrictions in Zabbix agent configuration
- 【设计模式】689- TypeScript 设计模式之观察者模式
- Found a swap file by the name ".jsidInspector.py.swp"
- CentOs7下部署tomcat文件服务器
- 【拓展】未来的JavaScript记录与元组
- 【Vuejs】690- Vue新特性:CSS 中使用 JS 变量
- Zabbix监控之从Kafka中获取消费进度和lag