一、事务介绍

1.事物的周期

1)成功的周期

begin;

sql1;

sql2;

sql3;

...

commit;

2)失败的周期

begin;

sql1;

sql2;

sql3;

...

rollback;

2.事务的特性

A:原子性

C:一致性

I:隔离性

D:持久性

二、事务的日志

1.redo log

redo,顾名思义“重做日志”,是事务日志的一种

1)作用

在事务ACID过程中,实现的是“D”持久化的作用。

REDO:记录的是,内存数据页的变化过程

特性:WAL(Write Ahead Log)日志优先写

2)图解

3)文字描述流程

#修改

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

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

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

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

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

#查询

1.首先将表中id=1的行所在数据页加载到内存中data buffer page

2.将redo log中id=1变成id=2的变化过程取加载到redo buffer page

3.通过data buffer page和redo buffer page得到一个结果

2.undo log

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

1)作用

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

· 当断电,或者未将数据commit提交,则在undo buffer page undo缓存区则不会有记录

· 当用户查询数据,则会从date buffer page、redo buffer page redo缓存区和undo buffer page undo缓存区中同时拿取数据,但是最后以undo buffer page 也就是undo缓存区中生效。

· 总的来说,就是只要没有commit则数据就不会生效,也就是回滚日志,当用户在查询就只会是初始未修改数据

2)图解

3.redo和undo的存储位置

#redo位置

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

-rw-rw---- 1 mysql mysql 50331648 Aug 15 06:34 ib_logfile0

-rw-rw---- 1 mysql mysql 50331648 Mar 6 2017 ib_logfile1

#undo位置

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

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

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

三、事务中的锁

1.什么是锁

“锁”顾名思义就是锁定的意思。

2.作用

在事务ACID特性过程中,“锁”和“隔离级别”一起来实现“I”隔离性的作用。

3.锁的类别

排他锁:保证在多事务操作时,数据的一致性。(在我修改数据时,其他人不得修改)

共享锁:保证在多事务工作期间,数据查询时不会被阻塞。

乐观锁:多实务操作时,数据可以同时修改,谁先提交,以谁为准

悲观锁:多实务操作时,数据只有一个人可以修改

4.多版本并发控制

1.只阻塞修改类操作(排他锁),不阻塞查询类操作(共享锁)

2.乐观锁的机制(谁先提交谁为准)

5.锁的粒度

1.MyIsam:表级锁

2.Innodb:行级锁

四、事务中的隔离级别

1.四种隔离级别

1.RU级别:READ UNCOMMITTED(独立提交):未提交读,允许事务查看其他事务所进行的未提交更改

2.RC级别:READ COMMITTED:允许事务查看其他事务所进行的已提交更改,查看不需要重新记入数据库

3.RR级别:REPEATABLE READ:允许事务查看其他事务所进行的已提交更改,查看数据需要重新进入数据库(InnoDB 的默认级别)

4.串行化:SERIALIZABLE:将一个事务的结果与其他事务完全隔离

2.查看隔离级别

#查看隔离级别(默认为rr级别)

mysql> show variables like '%iso%';

+---------------+-----------------+

| Variable_name | Value |

+---------------+-----------------+

| tx_isolation | REPEATABLE-READ |

+---------------+-----------------+

3.设置隔离级别

1)设置RU级别

[root@db03 ~]# vim /etc/my.cnf

transaction_isolation=read-uncommit

2)设置RC级别

[root@db03 ~]# vim /etc/my.cnf

transaction_isolation=read-commit

4.名词

1.脏读:RU级别,执行事务修改数据,被读取,但是数据最终回滚了,查询到的数据就是脏读

2.幻读:删除所有表数据,删除的同时有人插入数据,查看数据时以为是没删干净

3.不可重复读:修改数据后被读取,被读取之后再次修改数据,两次数据不一致

mysql事物介绍_MySQL--事务介绍相关推荐

  1. mysql事物介绍_MySQL事务介绍

    从事务理论的角度来说,可以把事务分为以下几种类型: 扁平事务类型(Flat Transaction) 带有保存点的扁平事务(Flat Transaction with Savepoints) 链事务( ...

  2. mysql事物 总结_Mysql事务总结

    数据库 事务的特性ACID 事务(Transaction)是并发控制的基本单位. 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转帐工作:从一个帐 ...

  3. spring mysql事物级别_mysql事务级别和spring中应用

    一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

  4. 什么是mysql事物定义_Mysql事务原理

    1. 什么是数据库事务 1.1 事务的应用场景 电商平台中例如常见的下单流程,会同时操作订单表,库存表等,有时候这些操作要在一个事务里面完成.还有金融系统业务的银行转账,需要保证一个账户增加另一个账户 ...

  5. mysql分区要求_MySQL 分区介绍总结

    介绍 分区是指根据一定的规则将一个大表分解成多个更小的部分,这里的规则一般就是利用分区规则将表进行水平切分:逻辑上没有发生变化但实际上表已经被拆分成了多个物理对象,每个分成被划分成了一个独立的对象.相 ...

  6. mysql ib_logfile 数量_Mysql 事务日志(Ib_logfile)

    mysql的innodb中事务日志ib_logfile(0/1) 概念: 事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,可以手工修改参数,调节开 ...

  7. mysql+nest+嵌套事务_MySQL——事务

    事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致状态转换为另一种一致状态. 关键词事务四大特性ACID MySql事务隔离级别 MVCC多版本并发控制实现方 ...

  8. 什么是mysql事物定义_MySQL中事务概念的简洁学习教程

    事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.程序和事务是两个不同的概念.一般而言:一段程序中可能包含多个事务. 事务具有四个特性:原子性(Atomici ...

  9. mysql的基本介绍_mysql基本介绍

    IBM 2 MySql 基础知识 2.1 关系结构数据模型数据库 2.2 SQL... 常用mysql command 介绍 MySQL 常用操作基本操作,以下都是 MySQL5.0 下测试通过首先说 ...

  10. mysql索引参数_MySQL索引介绍

    索引由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度. 创建索引是指在某个表的一列或者多列上建立一个索引,用来提高对表的访问速度, 创建索引由三种方法:在创建表的时候创建,在已存在的 ...

最新文章

  1. 安卓x86_Android:虚拟机体验基于安卓10的BlissOS V12.2 Android X86版
  2. idea中链接mysql查询_在Idea中编写Java程序连接查询Sqlite数据库
  3. jQuery避免$符和其他JS库冲突的方法对比
  4. SpringMVC 测试 mockMVC
  5. windows下PostgreSQL 安装与配置
  6. 东北大学计算机生源,辽宁省2021年普通高校招生计划,东北大学、大连理工大学没有扩招...
  7. 微软笔试题-c语言-算法分析
  8. 数据结构之——拓补排序和并查集
  9. 我讨厌单元测试:滕振宇谈如何进行单元测试
  10. 微软windows自带邮箱设置和使用(更改windows10账户绑定邮箱)qq邮箱绑定windows邮箱,163邮箱绑定windows邮箱,阿里云邮箱绑定windows邮箱
  11. emif接口速率问题_各种总线传输速率总结
  12. 了解软件工程与计算机科学的联系与区别
  13. 外贸企业电子邮箱哪个好?外贸邮箱怎么选择?
  14. 服务器微信了早上好,每天问候早上好的微信话语
  15. 《c语言修炼内功之第二种境界(看代码就是内存)之关键字系列一》
  16. 淘宝芝麻信用分提升方法技巧
  17. 1.Kafka下载安装
  18. 操作系统真象还原——12.初见MBR
  19. 文章出轨 马伊琍及其家人选择原谅 父亲被称为中国好岳父
  20. i711800h和r54600h哪个好

热门文章

  1. 《C程序设计语言》笔记 (三) 控制流
  2. wince开发环境搭建与全套教程
  3. VS2010版快捷键指南
  4. Nginx压测性能优化
  5. Linux服务器挂载ntfs移动硬盘
  6. IBM\浪潮\Dell\HP服务器raid(磁盘阵列)配置
  7. shell脚本备份MySQL
  8. Chrome浏览其中,关闭窗口js无效.(window.close())
  9. python中gensim内没有summarization的问题
  10. 【HDFS】HDFS与dfsadmin结合使用