一.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 fromstu;

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:记录的是,内存数据页的变化过程

8.redo的工作过程

执行步骤

update t1 set num=2 where num=1;

a)首先将t1表中num=1的行所在数据页加载到内存中buffer page

b)MySQL实例在内存中将num=1的数据页改成num=2

c)num=1变成num=2的变化过程会记录到,redo内存区域,也就是redo buffer page中

提交事务执行步骤

commit;

a)当敲下commit命令的瞬间,MySQL会将redo buffer page写入磁盘区域redo log

b)当写入成功之后,commit返回ok

9.事务日志undo

a(    undo 是什么?

undo,顾名思义“回滚日志”,是事务日志的一种。

b(    作用是什么?

在事务ACID过程中,实现的是“A”原子性的作用。当然CI的特性也和undo有关

10.redo和undo的存储位置

#redo位置

[root@db01 data]# ll/application/mysql/data/

-rw-rw---- 1 mysql mysql 50331648 Aug 15 06:34ib_logfile0-rw-rw---- 1 mysql mysql 50331648 Mar 6 2017ib_logfile1

#undo位置

[root@db01 data]# ll/application/mysql/data/

-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34ibdata1-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34 ibdata2

mysql+永久+关闭提交,MySQL学习【第十一篇存储引擎之事务解释】相关推荐

  1. MySQL高级篇——存储引擎和索引

     导航: [黑马Java笔记+踩坑汇总]JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud+黑马旅游+谷粒商城+学成在线+牛客面试题_java黑马笔记 目录 ...

  2. MySQL教程——3 中级篇(存储引擎、优化SQL步骤、索引的使用)

    Mysql高级-day02 1. Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & ...

  3. mysql 存储引擎的选择_MySQL学习笔记(四):存储引擎的选择

    一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...

  4. MySQL学习笔记之五:存储引擎和查询缓存

    一.存储引擎 1.InnoDB ⑴InnoDB是基于聚簇索引建立的,基于主键索引查询时,性能较好:它的辅助索引中必须包含主键列:因此,若表上的索引较多,为节约空间,主键应尽可能小 ⑵InnoDB支持自 ...

  5. Mysql使用大全(MySQL架构与存储引擎 、事务 、业务设计 、索引 、数据结构 、执行计划 、数值类型)

    这是一篇mysql大全,学习完这篇文章,相信在日常业务和面试完全不在问题,下面我们来一一介绍 MySQL架构与存储引擎 全局变量和会话变量 要想显式指定是否设置全局或会话变量,使用GLOBAL或SES ...

  6. MySQL的存储引擎、事务和锁机制

    1.什么存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧,锁定水平等功能,使用不同的存储引 ...

  7. mysql innodb内幕_Mysql(技术内幕:InnoDB存储引擎)

    什么是事务:事务是数据库的最小执行单元,由用户程序的执行而产生,在事务中对数据库的所有改变一经提交便不再修改,否则事务回滚:事务是为了保证更改数据库数据中间出现差错时前后数据库的一致性: 事务的ACI ...

  8. 网络安全学习第6篇 - 爆破及PE文件解释

    1.请采用暴力破解的方式去尝试破解crack.exe文件(在实验报告中说明破解原理即可,无需提交破解后的文件) 2.请依据参考文档中的内容编写一个小程序,使其可以实现如下功能: ①判断一个文件是否为P ...

  9. mysql像plsql一样删除提交_MySQL学习-MySQL内置功能_事务操作

    1.事务详解 1.1 事务的概念 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等 ...

最新文章

  1. ThinkPHP3.2URL重写隐藏应用的入口文件index.php
  2. 华为鸿蒙vivo,华为鸿蒙成功的关键:要让小米、OPPO、VIVO都用上鸿蒙
  3. python的六大数据类型中可以改变的数据类型为_Python中数据类型转换
  4. 迷你MVVM框架 avalonjs 学习教程14、事件绑定
  5. 基于Java Swing的仪表盘实现
  6. Linux防火墙设置-DNS服务器篇
  7. 构造函数和析构函数能不能是虚函数
  8. java输入年月输出日历_java输入年份打印该年份的年历
  9. 软件测试VS软件开发哪个好?怎么选择
  10. 微信公众号服务器架构,Flask框架实现微信公众号开发(接入微信服务器)
  11. [Java进阶] Swing两万字大总结一(超详细教程,这不得收藏一波)
  12. 《居里夫人自传》读后感
  13. 压缩ppt文件大小的方法
  14. ×××有哪些激光领域杰出的院士?
  15. Windows的hosts文件在哪里?
  16. Windows语音通话SDK集成及功能实现(实时语音通话四)
  17. android 文件扫描MediaStore
  18. JNA释放Memory对象分配的内存
  19. 云止水中,但是风却不能停泊在海上
  20. php-hyperf 使用Saber报 HTTP -4 Unknown: Linux Code 11: Resource temporarily unavailable

热门文章

  1. eclipse全局搜索_Eclipse如何进行全局搜索和单页面搜索?
  2. 阿里排查Java问题工具清单!
  3. 蓝桥杯java第八届第十题--k倍区间
  4. 03 ORA系列:ORA-00942 表或视图不存在 table or view does not exist
  5. 03-JDBC连接MySQL数据库【插入数据】
  6. java中不同包中怎么实例化,Java 笔试题 (01)
  7. python中all函数的用法_python中map、any、all函数用法分析
  8. python 折线图x时间_在Python Bokeh折线图中设置日期/时间轴上的比例
  9. 排序算法 | 简单选择排序,算法的图解、实现、复杂度和稳定性分析
  10. 呢篇唔系教程 -- 记录自己第一次Android刷机