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

Mysql(事务)

 

 执行

-- 1. 查询张三账户余额
select * from account where name = '张三';
-- 2. 将张三账户余额-1000
update account set money = money - 1000 where name = '张三';
模拟sql语句错误#mysql不能识别汉字
-- 3. 将李四账户余额+1000
update account set money = money + 1000 where name = '李四';-- 此语句出错后张三钱减少但是李四钱没有增加

事务相关命令

-- 查看事务提交方式
SELECT @@AUTOCOMMIT;
-- 设置事务提交方式,1为自动提交,0为手动提交,该设置只对当前会话有效
SET @@AUTOCOMMIT = 0;开启事务:
START TRANSACTION 或 BEGIN TRANSACTION;
提交事务:
COMMIT;
回滚事务:
ROLLBACK;

 操作实例(常用于批量操作):

start transaction;
select * from account where name = '张三';
update account set money = money - 1000 where name = '张三';
update account set money = money + 1000 where name = '李四';
commit;

四大特性ACID
原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败
一致性(Consistency):事务完成时,必须使所有数据都保持一致状态
隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

并发事务

问题描述
脏读一个事务读到另一个事务还没提交的数据
不可重复读一个事务先后读取同一条记录,但两次读取的数据不同
幻读

一个事务按照条件查询数据时,没有对应的数据行,但是再插入数据时,又发现这行数据

已经存在

 脏读:

不可重复读

 幻读

 

解决方案:设置事务的隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted会出现会出现会出现
Read committed(orecal默认)不会
Repeatable Read(默认)不会不会
Serializable不会不会不会

 

--查看事务隔离级别:
SELECT @@TRANSACTION_ISOLATION;
--设置事务隔离级别:
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE };
--SESSION 是会话级别,表示只针对当前会话有效,GLOBAL 表示对所有会话有效

Serializable 性能最低;Read uncommitted 性能最高,数据安全性最差

http://www.dtcms.com/a/289126.html

相关文章:

  • 30个常用的Linux命令汇总和实战场景示例
  • 30天打牢数模基础-粒子群算法讲解
  • 详解Mysql索引合并
  • Jetpack - ViewModel、LiveData、DataBinding(数据绑定、双向数据绑定)
  • langchain调用本地ollama语言模型和嵌入模型
  • 梯度提升之原理
  • COGNEX康耐视IS5403-01智能相机加Navitar 18R00 LR1010WM52镜头
  • React 英语打地鼠游戏——一个寓教于乐的英语学习游戏
  • [Windows] Bili视频转图文笔记 v1.7.5
  • 网鼎杯2020青龙组notes复现
  • 7. 命令模式
  • Modbus Slave 使用教程:快速搭建模拟从站进行测试与开发
  • Ribbon轮询实现原理
  • Unity笔记——Unity 封装方法指南
  • day24——Java高级技术深度解析:单元测试、反射、注解与动态代理
  • [Python] -项目实战类3- 用Python制作一个记事本应用
  • CVE-2022-41128
  • Python数据处理库与语法总结
  • API获取及调用(以豆包为例实现图像分析)
  • FreeRTOS任务创建与删除
  • 掌握配置文件(三):运用Profile实现多环境配置隔离
  • 三级知识点汇总(详解)【c++】——3
  • 让不符合要求的任何电脑升级Windows11
  • 《通信原理》学习笔记——第五章
  • 开源安全大模型Foundation-Sec 8B的安全实践
  • 分享如何在保证画质的前提下缩小视频体积实用方案
  • 【记某次线上消息积压问题排查及解决方案】
  • 基于Pytorch的人脸识别程序
  • 基于FPGA实现ARINC818
  • Milvus Dify 学习笔记