当前位置: 首页 > article >正文

MySQL的事务认识

什么是事务?

事务,就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。

事务的ACID原则 (四大原则)

原子性:意味着数据库中的事务执行是作为原子粒度。即不可再分,整个语句要么执行,要么不执行。

一致性:即在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性:事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

持久性:意味着在事务完成以后 ,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

MySQL实现事务的方法步骤
-- 事务的操作
-- 1. 关闭自动提交
set autocommit = 0;
-- 2. 开始事务
start transaction;
-- 3. 一组sql语句
update bank set bmoney = bmoney-1000 where bname='葛二蛋';
update bank set bmoney = bmoney+1000 where bname='王铁牛';
​
-- 4. 结束事务(判断)
    -- 提交
    commit;
    -- 回滚
    rollback;
-- 5. 开启自动提交
set autocommit = 1;
MySQL中的锁

锁分类:

基于锁的属性分类:共享锁(读锁,S锁),排他锁(写锁,X锁)。

基于锁的粒度分类:表锁,行锁(记录锁,间隙锁,临建锁)

基于锁的状态分类:意向共享锁,意向排他锁。

事务的隔离级别

事务并发问题:

在事务并发执行的时候,如果不进行事务隔离,那么就会产生脏写,脏读,重复读,幻读的问题。

事务的隔离级别:

read_uncommitted读未提交解决问题: 脏写
read_committed读提交解决问题:脏写,脏读
repeatable_read可重复读解决问题:脏写,脏读,不可重复读,幻读(mysql的innodb存在)
serializeable串行化不管读取还是修改所有的事务串行化执行,一个事务的执行必须等其他事务结束
InnoDB的MVCC

MySQL的多版本并发控制(MVCC)是⼀种⽤于实现事务隔离的技术,它允许多个事务在同⼀时刻对同⼀数据进⾏操作⽽不互相阻塞。MVCC通过维护数据的多个版本来实现这⼀点,每个事务看到的数据版本是基于该事务开始时的数据版本。

InnoDB就是通过MVCC机制解决可重复读中的幻读问题。

MVCC的优点

  1. 提高并发性能

  2. 减少锁争用

  3. 简化事务管理

MVCC的缺点

  1. 额外的存储开销

  2. 垃圾回收开销


http://www.kler.cn/a/288166.html

相关文章:

  • 传输层(TCP、UDP、RDT详解)
  • 视频智能分析打手机检测算法安防监控打手机检测算法应用场景、算法源码、算法模型介绍
  • 计算机网络(一) —— 网络基础入门
  • JavaScript 在 VSCode 中的开发体验
  • 【数据结构】二叉搜索树的功能实现详解
  • 无人机之发动机篇
  • 谷歌的 GameNGen:无需游戏引擎,人工智能模拟 “毁灭战士“,开辟新天地
  • 24.9.1(康托展开)
  • 构建高可用的微服务架构:Spring Cloud Consul与负载均衡
  • 【C++学习笔记】预处理指令
  • 三级_网络技术_56_应用题
  • 如何本地搭建Whisper语音识别模型|语音识别|本地部署
  • C#中的ORM和EF框架
  • RK3568 驱动RTC 使用
  • 记录游戏高光时刻!4款电脑录屏工具分享
  • 牧野机床采集数据
  • 【Linux内存】Linux的内存管理机制
  • 3、DjangoAdmin导出excel和csv文件
  • win10系统 mysql8 免安装版配置启动
  • 高教社杯数模竞赛特辑论文篇-2016年A题:系泊系统设计(续)(附MATLAB代码实现)