MySQL事务的操作
事务的作用
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人 员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 据库操作语句就构成一个事务!
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执 行。
事务的特点
事务用来管理 insert,update,delete 语句 一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity,或称不可分割性)、一致性 (Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束 在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态, 就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必 须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成 预定的工作。
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个 事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交 (Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串 行化(Serializable)。
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
事务隔离级别
脏读:
事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
不可重复读:
事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新 并提交,导致事务A多次读取同一数据时,结果 不一致。
幻读:
系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B 就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就 好像发生了幻觉一样,这就叫幻读。
小结:
不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不 可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
事务命令
BEGIN 或 START TRANSACTION 显式地开启一个事务;
COMMIT 也可以使用 COMMIT WORK不过二者是等价的。COMMIT 会提交事务并使已对数据 库进行的所有修改成为永久性的;
ROLLBACK 也可以使用 ROLLBACK WORK不过二者是等价的。回滚会结束用户的事务,并撤 销正在进行的所有未提交的修改;
SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT;
RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句 会抛出一个异常;
ROLLBACK TO identifier 把事务回滚到标记点;
SET TRANSACTION 用来设置事务的隔离级别。
InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。
查看MySQL默认隔离级别
默认repeatable read 可重复读
事务基本操作
-- 设置当前会话事务隔离级别
set session transaction isolation level read uncommitted;
-- 开启会话
begin;
-- 回滚
rollback;
-- 提交事务
commit
MySQL事务的操作相关推荐
- lua mysql 事务_Lua 操作数据库(MySQL)
Lua 操作数据库(MySQL) 对于简单的数据操作,我们可以使用文件,但是,有时这些文件操作可能效率不高.可扩展性和功能不够强大.为此,我们通常会切换到数据库.LuaSQL提供从Lua到数据库管理系 ...
- mysql 事务 不同库_MYSQL数据库重点:事务与锁机制
一.事务 一组连续的数据库操作,每一次操作都成功,整个事务就成功,只要有一步出错,整个事务就失败: MySQL事务与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB: ...
- mysql 一对一关联查询_学习ThinkPHP的第20天--MySQL事务操作、查询事件、一对一关联...
之所以从20天才开始写随笔记是因为之前没搞自己的博客 从20天开始记录我在ThinkPHP中的点点滴滴 1.MySQL事务操作 /**事务操作*/ //startTrans启动事务.rollback回 ...
- mysql事务操作——transaction
[实施工程师]必备技能--事务操作 目录 [实施工程师]必备技能--事务操作 mysql开启事务: mysql提交事务: mysql事务回滚: 实例: 1.开启事务并执行[增删改]语句测试 2.回滚测 ...
- lua mysql 事务_Lua数据库/MySQL操作
对于简单的数据操作,我们可以使用文件,但是,有时候这些文件操作效率不高,可扩展性和强大不好.所以我们可能会经常切换到使用数据库. LuaSQL是从Lua一些数据库管理系统的一个简单的接口. LuaSQ ...
- mysql同步三张表如何用事务_MySQL 多表查询与事务的操作
表连接查询 什么是多表查询 # 数据准备 # 多表查询的作用 * 比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询 # 如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表 ...
- mysql 事务操作与锁机制
mysql 事务操作与锁机制
- mysql 事务 注意 优化_MySQL日常SQL优化注意事项
1.在where条件中避免双百分号"%col%" 在MySQL的SQL查询条件中使用"%col%"无法使用索引而进行全表扫描影响查询效率 2.避免函数出现在wh ...
- DB-MySQL:MySQL 事务
ylbtech-DB-MySQL:MySQL 事务 1.返回顶部 1. MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人 ...
最新文章
- resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
- 在Powerpoint中插入Flash的方法
- php删除文件指令,php – Symfony cache:清除命令更改文件夹所有者
- python类和对象详解_Python公开课 - 详解面向对象
- 创建交叉表_质性数据分析软件NVivo教程:交叉表查询
- oracle rownum 学习
- java中生成不重复随机的数字
- 开启ssh不能用root登入的限制
- 蔚来汽车发布声明:自称“前员工”造谣者已被起诉 查明并非前员工
- 如何优雅地(用TeX)写AI论文
- android apk 在线分析,apkanalyzer
- [github高级控件]带你走近-自定义标签云
- 知云文献翻译选中翻译出现乱码的解决方式
- 线性规划与整数规划小结
- 我为何从开发转测试,并坚持了16年?
- 移动硬盘格式化了的数据找回方法
- Python中随机漫步的实现
- PrimeNG p-tree 手动添加勾选
- 程序员的进化 - 在拉勾1024程序员节上的演讲
- CTF/CTF练习平台-welcome to bugkuctf【php://filter及php://input】