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

MySQL中级学习 (十) MySQL入门--事务

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

MySQL中级学习 (十) MySQL入门--事务

一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务。是一种机制,是iyge操作序列,保证序列操作要么都做,要么都不做。

事务控制语句:

begin:开始一个事务(与start transaction等价)

rollback:事务回滚(rollback work 等价)

commt:提交事务(commit work等价)

set transaction:设置事务隔离级别(SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL )GLOBAL:代表设置全局事务 SESSION:代表设置会话事务,:read uncommited、read commited、 repeatable read、serializable

set 改变事务是否自动提交:set autocommit=0禁止自动提交;=1开启自动提交。

事务特性:ACID:原子性、一直性、隔离性、持久性

事务的实现:redo log:持久性和一致性;undo_log:一直性和MVCC

redo:记录修改后的状态,commit基于redo实现,无论是否开启事务,都会立刻执行,只是开启事务后将执行结果保存在redo中,commit之后才写入磁盘。

undo:记录修改前的状态,rollback基于undo实现

ps:

spring开启事务和mysql开启事务不一致时会怎样?
以spring事务为主
redis事务和mysql事务的区别?
1.事务指令
Mysql:begin、commit、rollback
Redis:multi(标记事务开始)、exec(执行commands队列)、discard(结束事务,并消除commands队列)
2.事务底层实现
Mysql基于undo日志和redo日志
undo日志实现了rollback操作
redo日志实现了commit操作
Redis基于Commands队列实现
3.事务默认状态
Mysql默认开启
无论是否开启事务,都会马上执行命令,只是开启事务后将状态存入redo日志,commit后才写入磁盘
Redis默认关闭
没开启事务:立即执行并返回结果,直接写入内存
开启事务:不会立刻执行,排入队列,并返回队列状态,调用exec才会执行commands中的命令
4.事务是否支持回滚
Mysql支持回滚 Redis不支持回滚,
可以使用WATCH去监听key在事务发生之前是否被修改,若被修改则回滚

5.事务是否原子性
mysql事务是原子性的,关系型数据库中的事务都是原子性的
redis命令是原子性的,事务不是原子性的
1.若事务队列中存在命令错误(类似java编译性错误),执行exec,所有命令都不会执行
2.若事务中存在语法错误(类似java 1/0的运行时异常),执行 exec,正确命令会被执行,错误命令抛出异常
 

 

 

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

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

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