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

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.mrgr.cn/news/22997.html

相关文章:

  • JavaWeb(后端)
  • 【C++二分查找】1482. 制作 m 束花所需的最少天数
  • QT接入播放摄像头RTSP流
  • spingboot中创建简单的WebSocket服务和使用OKHttp创建socket客户端接收数据
  • Google AI 概述——喜欢的三点和不喜欢的两点
  • 力扣100题——二分查找
  • [Python学习日记-11] Python中的流程控制(while)
  • 学习笔记八:基于Jenkins+k8s+Git+DockerHub等技术链构建企业级DevOps容器云平台
  • LeetCode移除元素
  • 【C++ Primer Plus习题】14.1
  • 【Linux】万字解读<进程控制>:创建&中止&等待&替换
  • Linux 用户和组的增删改查,用户切换及权限超详细解读
  • SAP 免费学习网站推荐
  • 【AI绘画】Midjourney后置指令--seed、--tile、--q、--chaos、--w、--no详解
  • 20240910 每日AI必读资讯
  • Iceberg与SparkSQL写操作整合
  • 电压跟随器的作用是什么?
  • Vulnhub靶场 DC-1
  • 机器学习特征分析
  • 线性代数 第七讲 二次型_标准型_规范型_坐标变换_合同_正定二次型详细讲解_重难点题型总结