事务的作用

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事务的操作相关推荐

  1. lua mysql 事务_Lua 操作数据库(MySQL)

    Lua 操作数据库(MySQL) 对于简单的数据操作,我们可以使用文件,但是,有时这些文件操作可能效率不高.可扩展性和功能不够强大.为此,我们通常会切换到数据库.LuaSQL提供从Lua到数据库管理系 ...

  2. mysql 事务 不同库_MYSQL数据库重点:事务与锁机制

    一.事务 一组连续的数据库操作,每一次操作都成功,整个事务就成功,只要有一步出错,整个事务就失败: MySQL事务与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB: ...

  3. mysql 一对一关联查询_学习ThinkPHP的第20天--MySQL事务操作、查询事件、一对一关联...

    之所以从20天才开始写随笔记是因为之前没搞自己的博客 从20天开始记录我在ThinkPHP中的点点滴滴 1.MySQL事务操作 /**事务操作*/ //startTrans启动事务.rollback回 ...

  4. mysql事务操作——transaction

    [实施工程师]必备技能--事务操作 目录 [实施工程师]必备技能--事务操作 mysql开启事务: mysql提交事务: mysql事务回滚: 实例: 1.开启事务并执行[增删改]语句测试 2.回滚测 ...

  5. lua mysql 事务_Lua数据库/MySQL操作

    对于简单的数据操作,我们可以使用文件,但是,有时候这些文件操作效率不高,可扩展性和强大不好.所以我们可能会经常切换到使用数据库. LuaSQL是从Lua一些数据库管理系统的一个简单的接口. LuaSQ ...

  6. mysql同步三张表如何用事务_MySQL 多表查询与事务的操作

    表连接查询 什么是多表查询 # 数据准备 # 多表查询的作用 * 比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询 # 如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表 ...

  7. mysql 事务操作与锁机制

    mysql 事务操作与锁机制

  8. mysql 事务 注意 优化_MySQL日常SQL优化注意事项

    1.在where条件中避免双百分号"%col%" 在MySQL的SQL查询条件中使用"%col%"无法使用索引而进行全表扫描影响查询效率 2.避免函数出现在wh ...

  9. DB-MySQL:MySQL 事务

    ylbtech-DB-MySQL:MySQL 事务 1.返回顶部 1. MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人 ...

最新文章

  1. resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
  2. 在Powerpoint中插入Flash的方法
  3. php删除文件指令,php – Symfony cache:清除命令更改文件夹所有者
  4. python类和对象详解_Python公开课 - 详解面向对象
  5. 创建交叉表_质性数据分析软件NVivo教程:交叉表查询
  6. oracle rownum 学习
  7. java中生成不重复随机的数字
  8. 开启ssh不能用root登入的限制
  9. 蔚来汽车发布声明:自称“前员工”造谣者已被起诉 查明并非前员工
  10. 如何优雅地(用TeX)写AI论文
  11. android apk 在线分析,apkanalyzer
  12. [github高级控件]带你走近-自定义标签云
  13. 知云文献翻译选中翻译出现乱码的解决方式
  14. 线性规划与整数规划小结
  15. 我为何从开发转测试,并坚持了16年?
  16. 移动硬盘格式化了的数据找回方法
  17. Python中随机漫步的实现
  18. PrimeNG p-tree 手动添加勾选
  19. 程序员的进化 - 在拉勾1024程序员节上的演讲
  20. CTF/CTF练习平台-welcome to bugkuctf【php://filter及php://input】

热门文章

  1. 关于前端研发质量提升的建设思路
  2. 超声波测距仪编程_Micropython教程之TPYBoard DIY超声波测距仪实例演示
  3. 为知所见即所得MarkDown插件
  4. 2020年中国智能物联网(AIoT)白皮书
  5. OpenExpress开源啦
  6. 脉冲触发器(JK触发器)
  7. SAR ADC 介绍 核芯CL1606/CL1689/CL1680 替代AD7607/AD7689/AD1980
  8. Mecha:将 Mesh 进行到底
  9. 冬季减肥 三餐应该怎么吃
  10. 深度学习(9) 计算机专业方面的期刊介绍