当前位置:网站首页>TCL:事务的特点,语法,测试例——《mysql 从入门到内卷再到入土》
TCL:事务的特点,语法,测试例——《mysql 从入门到内卷再到入土》
2022-08-10 20:51:00 【Dhaa_Ryan】
内卷能让一个群体的内部变得异常的精致,但是本质上却完完全全没有任何的进步,并且会导致更多没必要的资源浪费以及带来更加激烈的竞争。它是zbzy社会下劳动力过剩的必然现象。
事务
TCL(事务控制)语言
一个或一组sql语句组成的执行单元,有点像函数
如果有一个事务有某一条语句失败,那么整个单元将会被回滚(所有的努力全部木大)
innodb引擎支持事务功能
ACID属性:
A:原子性
事务它不可分割,里面的操作要么都发生,要么都不发生
类似于函数
C:一致性
事务必须让数据库从一个一致性状态变换到另外一个一致性状态
事务执行完之后数据依旧准确可靠
I :隔离性
事务之间的执行不会相互影响,互不干扰
D:持久性
事务一旦被提交(执行),它的改变是永久性的,接下来的其他操作和数据库故障不应该对其有影响
创建事务
隐式事务:事务没有明显的开启和结束的标记
//看不出来是事务,insert,update,delete
显式事务:事务有明显的开启和结束的标记
前提:必须设置自动提交功能为禁用
set autocommit=0;
//输入后默认开启transaction,不然它依旧会把一个语句当成一个事务
结束事务:commit
回滚事务:rollback
测试例:
SET autocommit=0;
START TRANSACTION
//开启事务
INSERT INTO `user` (`id`, `mobile`, `nickname`, `gmt_created`) VALUES (1, '1919810', '三浦大先辈', now());
INSERT INTO `user` (`id`, `mobile`, `nickname`, `gmt_created`) VALUES (1, '114514', '野兽先辈', now());
ROLLBACK/COMMIT
回滚/提交事务
SAVEPOINT 节点;//设置保存点
测试例:
SET autocommit=0;
START TRANSCTION;
DELETE FROM account WHERE id=25;
SAVEPOINT a
DELETE FROM account WHERE id=28;
ROLLBACK TO a;//回滚到设置的断点处,假如说回滚执行后,id=25的依旧被删除,但是id=28的被保留
在事务中DELETE和TRUNCATE的区别
SET autocommit=0;
START TRANSCTION;
DELETE FROM account
ROLLBACK;//在ROLLBACK后数据成功回滚,也许是在内存中删除
SET autocommit=0;
START TRANSCTION;
TRUNCATE TABLE account
ROLLBACK;//在ROLLBACK后数据被删除了,也许是在磁盘中删除
并发问题处理
同时运行的多个事务,当访问数据库中的相同数据时,需要采取必要的隔离机制
脏读:对于两个事务T1,T2,T1读取了被T2更新但是还没被提交的数据之后,若T2回滚,那么T1读取的内容是临时且无效的
不可重复读:对于两个事务T1,T2,T1读取了一个字段,然后T2更新了该字段,之后T1再读取同一个字段,那么值就不同了
幻读:对于两个事务T1,T2,T1从一个表中读取了一个字段,然后T2在表中插入了一些新的行之后,若T1再次读取同一个表,就会多出几行
数据库的事务隔离级别
Oracle:支持2种事务隔离级别,READ COMMITED ,SERIALIZABLE,默认级别为READ COMMITED
MYSQL:
支持4种,
READ UNCOMMITTED//读未提交数据
允许事务读取未被其他事务提交的变更,脏读,不可重复和幻读的问题都会出现
READ COMMITED//读已提交数据
只允许事务读取和其他被提交事务的变更,可避免脏读,不可重复和幻读的问题任然会出现
REPEATABLE READ(默认)
可重复读
确保事务可以多次从一个字段中读取相同的只,在这个事务持续期间,禁止其他事务对这个字段进行更新,可以避免脏读和不可重复读,但是幻读的问题依然存在
SERIALIZABLE//串行化,序列化
确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入,更新,删除操作,可避免所有并发问题,但是效率低
查看当前的隔离级别
SELECT @@tx_isolation
设置当前mySQL连接的隔离级别:
set transaction isolation level read committed;
设置数据库系统的全局的隔离级别:
set global transaction isolation level read committed;
返回索引
边栏推荐
- paddle 35 paddledetection保存训练过程中的log信息
- 金鱼哥RHCA回忆录:CL210OpenStack操作的故障排除--章节实验
- 爱丁堡大学最新《因果机器学习: 医疗健康与精准医疗应用》2022综述
- 微擎盲盒交友变现-vp_ph打开慢优化
- APP application related instructions in Auto.js
- win7开机有画面进系统黑屏怎么办
- ACM解题笔记——HDU 1401 Solitaire(DBFS)
- mysql性能监控与执行计划
- ACM模板笔记:最长不下降/上升子序列
- Kubernetes 笔记 / 入门 / 生产环境 / 用部署工具安装 Kubernetes / 用 kubeadm 启动集群 / 用 kubeadm 创建集群
猜你喜欢
组合导航精度分析
npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead.
Mark!画出漂亮的神经网络图!神经网络可视化工具集锦搜集
【go】依赖注入
ACM MM 2022 统一归一化:加速Transformer工业部署的归一化方法
【语义分割】2016-SegNet TPAMI
快消品行业经销商协同系统:实现经销商可视化管理,提高沟通执行效率
"Distributed Microservice E-commerce" Topic (1) - Project Introduction
Demis Hassabis:AI 的强大,超乎我们的想象
爬虫基本原理介绍、实现以及问题解决
随机推荐
Mark!画出漂亮的神经网络图!神经网络可视化工具集锦搜集
这些mysql基础命令、基础知识还记得吗?(面试,学习,复习都可以)一万三千字总结
Detailed explanation and use of each module of ansible
npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead.
Kyligence 通过 SOC 2 Type II 审计,以可信赖的企业级产品服务全球客户
双 TL431 级联振荡器
ansible各个模块的详解和使用
一次由groovy引起的fullGC问题排查
论配置化系统的配置
Single-click to cancel the function
ES6中的for...in/of的使用
【语义分割】2015-UNet MICCAI
饿了么-机构树单选
【CMU博士论文】视频多模态学习:探索模型和任务复杂性,152页pdf
OPPO Enco X2 迎来秋季产品升级 旗舰体验全面拉满
设备管理中数据聚类处理
XML小讲
ACM模板笔记:八数码问题——使用BFS+康托展开打表解决
"POJ 3666" Making the Grade problem solution (two methods)
壁仞推出全球最大算力芯片,号称以7nm超越英伟达4nm最新GPU