栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mysql事务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql事务

文章目录
  • 前言
  • 一、事务控制语句
  • 二、ACID特性
    • 1.原子性(Atomicity)
    • 2.一致性(Consistency)
    • 3.隔离性(Isolation)
    • 4.持久性(Durability)
  • 二、事务并发异常
    • 1.脏读
    • 2.不可重复读
    • 3.幻读
    • 4.小结
  • 三、其他细节
    • 1.锁
    • 2.MVCC
    • 3.redo log
    • 3.undo log


前言

目的:事务将数据库从一种一致性状态转换为另一种一致性状态;
特征:在数据库提交事务,可以确保要么所有修改已经保存,要么所有修改都不保存;

一、事务控制语句
START TRANSACTION | BEGIN --显示开启事务
COMMIT--提交事务,并使得已对数据库做的所有修改持久化
ROLLBACK--回滚事务,结束用户的事务,并撤销正在进行的所有未提交的修改
SAVEPOINT identifier --创建保存点
RELEASE SAVEPOINT identifier --保存保存点
ROLLBACK TO [SAVEPOINT] indentifier --回滚至保存点
二、ACID特性 1.原子性(Atomicity)

要么都提交,要么都回滚。
实现:undolog 实现回滚操作

2.一致性(Consistency)

指数据库从一种一致性状态转变为下一种一致性状态,执行事务前后,数据库完整性没有被破坏。

3.隔离性(Isolation)

事务的隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离,也就是事务提交前对其它事务都不可见。
实现:mvcc,表(索引B+树)锁,页(索引B+树叶子节点)锁,行(叶子节点当中某一段记录行)锁

4.持久性(Durability)

事务提交后,事务DML操作将会持久化(写入redolog磁盘文件);即使发送宕机等故障,数据库也能将数据恢复。redolog记录的是物理日志。

二、事务并发异常 1.脏读

现象:事务1可以读到事务2未提交的数据;
解决:隔离级别提升到read-committed。

2.不可重复读

现象:事务1可以读到事务2的提交数据。通常发生在一个事务种两次读到的数据是不一样的;
解决:隔离级别提升到repeatable-read

3.幻读

现象:事务中一次读操作不能支撑接下来的业务逻辑;通常发生在一个事务中一次读判断接下来写操作失败的情况。
解决:1.加读锁,select 语句后加 LOCK IN SHARE MODE;
2.隔离级别提升到serializable

4.小结
隔离级别脏读不可重复读幻读
READ-UNCOMMITTED存在存在存在
READ-COMMITTED不存在存在存在
REPEATABLE-READ不存在不存在存在
SERIALIZABLE不存在不存在不存在
三、其他细节 1.锁
锁类型概念
共享锁(S)行级读时使用
排他锁(X)行级更改或删除时使用
意向共享锁(IS)表级对表中几行使用的共享锁
意向排他锁(IX)表级对表中几行使用的排他锁
2.MVCC

概念:多版本并发控制;用来实现一致性的非锁定读(读时不加X锁)。

3.redo log

用来实现事务的持久性;内存中包含redo log buffer,磁盘中包含redo log file。

3.undo log

用来帮助事务回复,以及MVCC的功能;存储在共享表空间中;undo是逻辑日志,回滚时将数据库逻辑地恢复到原来的样子。同时记录行的版本信息,用于处理MVCC功能;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/697224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号