mysql-管理事务
一、介绍
mysql支持几种基本的数据库引擎,其中MYSQL的两种最基本的引擎MyISAM和InnoDB,其中只有InnoDB支持事务管理。
事务处理:可以用来维护数据库的完整性,他保证成批的MySQL操作要么完全执行,要么不完全执行。
事务处理是一种机制,用来管理必须成批执行的MYSQL操作,以保证数据库不包含不完整的操作结果。
二、事务的几个基本术语
事务(transaction):指一组SQL语句
回退(rollback):指撤销指定SQL语句的过程
提交(commit):指将未存储的SQL语句结果写入数据库表。
保留点(savepoint):指事务处理中设置的临时占位符,你可以对它发布回退(与回退整个事务处理不同)
三、控制事务处理
事务开始:
start transaction;
1、使用ROLLBACK:MySQL用这个命令来回退(撤销)MySQL语句:
select * from ordertotal;
start transaction;
delete from transaction;
select * from ordertotals;
rollbaclk;
select * from ordertotals;
虽然已经删除数据,但是我们在提交之前使用了rollback,那么在进行查询的时候,已经删除了的数据又恢复了。
rollback只能在一个事务处理内使用,事务处理用来管理insert,update和delete语句,而select,create,drop等都不能使用事务管理。
2、使用commit:在事务处理中,提交并不会隐含的进行,为进行明确的提交,使用commit语句。
start transaction;
delete from orderitems where order_num=20010;
delete from orders where order_num=20010;
commit;
3、使用保留点:简单的rollback和commit语句就可以写入或撤销整个事务处理,但是更复杂的事务处理可能需要部分提交或回退。
为了支持回退部分事务处理,必须能在事务处理块中合适的位置放置占位符,这样需要回退,可以回退到某个占位符。
savepoint delete1;
rollback to delete1;
4、更改默认的提交方式
默认的mysql行为是自动提交所有的改动,但是你可以设置Mysql不自动提交修改,如下:
set autocommit=0;
三、事务隔离级别
事务隔离性:是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
1、串行化(Serializable):所有事务一个接一个执行,这样可以避免幻读(phantom read),对于基于锁来实现的并发控制的数据库来说,串行化要求在执行范围查询的时候,需要获取范围锁,如果不是基于锁实现并发控制的数据库,则检查到有违反串行操作的事务时,需回滚该事务。
2、可重复读(repeated read):所有被select获取的数据都不能被修改,这样就可以避免一个事务前后读取不一致的情况。但是没有办法控制幻读,因为这个时候事务不能更改所选的数据,但是可以增加数据,因为强恶意事务没有范围锁。(事务a读取数据,事务b可以同样读取,不可以更改数据,但是可以增加数据)
3、读已提交(read commit):被读取的数据可以被其他事务修改,这样可能导致不可重复读,也就是说,事务读取的时候,获取读锁,但是在读完之后立即释放(不需要等事务结束),而写锁则是事务提交之后才释放的,释放读锁之后就可能被其他事务修改数据。改等级也是sql server默认的隔离等级。(事务a读取数据,事务b不可以读取数据,事务b可以修改数据)
4、读未提交(read uncommitted):最低的隔离等级,允许其他事物看到没有提交的数据,会导致脏读。
总结:1、四个级别逐渐增强,每个级别解决一问题;
2、事务级别越低,性能越差,大多数环境read committed就可以用了。
转载于:https://www.cnblogs.com/television/p/8370786.html
mysql-管理事务相关推荐
- mysql开启事务_MySQL入门之事务(上)
事务 事务介绍 事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功 数据库开启事务命令 start transaction 开启事务 (等同于set autoco ...
- Mysql:事务管理——未完待续
逻辑事务管理 --基本上应用于innodb引擎 begin [work] start transaction [with consistent snapshot] commit [work ...
- mysql执行事务的语句_详解MySQL执行事务的语法和流程
摘要:MySQL 提供了多种存储引擎来支持事务. MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 ...
- MySQL分布式事务(XA事务)
MySQL分布式事务(XA事务) 官网:https://dev.mysql.com/doc/refman/5.7/en/xa.html 1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服 ...
- 3、MySQL执行事务的语法和流程
MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 REDO 日志实现,MyISAM 存储引擎不支持事 ...
- mysql transaction用法,mysql的事务,隔离级别和锁用法实例分析
本文实例讲述了mysql的事务,隔离级别和锁用法.分享给大家供大家参考,具体如下: 事务就是一组一起成功或一起失败的sql语句.事务还应该具备,原子性,一致性,隔离性和持久性. 一.事务的基本要素 ( ...
- limit实现原理 mysql_值得一生典藏:MySQL的事务实现原理
点击上方"匠心零度",选择"设为星标" 做积极的人,而不是积极废人 原文地址:https://www.toutiao.com/a6777338939360412 ...
- MySQL的事务与事务隔离
MySQL中自从引入InnoDB引擎后,在MySQL中就支持事务,事务就是一组原子性的查询语句,也即将多个查询当作一个独立的工作单元,平时通过提交工作单元来完成在事务中的相应的查询或修改,在能支持事务 ...
- mysql 默认事务隔离级别_MySQL 事务隔离级别详解
个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 简介: MySQL的事务隔离级别一共有四个,分别是读未提交.读已提交.可重复读以及可串行化. 四个特性ACID 原子性 (Atomicity) 事 ...
- insert事务隔离mysql_MySQL数据库详解(三)MySQL的事务隔离剖析
提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务.最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱. 转账过程具体到程序里会有一系列的操作,比如 ...
最新文章
- Java基础篇:Executor框架
- Java盗刷_一个依赖搞定 Spring Boot 反爬虫,防止接口盗刷!
- 盘点2013年那些最优秀的网页设计作品【系列五】
- HTML5 progress元素的样式控制、兼容与实例
- git 的右键快捷菜单恢复
- esxi服务器能虚拟多少虚拟机,关于ESXI能虚拟出多少个虚拟机和CPU的关系
- android 如何使用android:supportsRtl属性
- 用Elman做时序预测
- java输入一个字符给c赋值_C语言字符串的输入输出
- Hay Points
- 了解架构设计远远不够!一文拆解 Tomcat 高并发原理与性能调优
- mysql基础知识(一)
- java模拟内存溢出并分析_模拟内存溢出通过MAT分析
- POJ3981 字符串替换【水题】
- 51单片机c语言音乐盒设计,基于51单片机的音乐盒课程设计开题报告精品
- C:\Users\用户名\AppData\Roaming里面的文件可以删除吗?
- 秒杀活动,怎么设计全套技术方案
- 在C++中实现aligned_malloc
- 使用python制作epub
- 21-高级属性之内建方法(2)
热门文章
- Gentoo 安装日记 18(重新配置网络和设置密码)
- 有没有那种python在线编译器_推荐几个好用的在线编译器
- 抢劫(01背包+对立事件)
- MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)
- python导入csv数据例子-使用python读取csv文件快速插入数据库的实例
- 实战案例丨小型企业如何从IPv4迁移至IPv6
- 前后端、多语言、跨云部署,全链路追踪到底有多难?
- 使用 rocketmq-spring-boot-starter 来配置、发送和消费 RocketMQ 消息
- 阿里巴巴 Kubernetes 能力再获 CNCF 认可 | 云原生生态周报 Vol. 32
- 把阿里巴巴的核心系统搬到云上,架构上的挑战与演进是什么?