事务

一个或一组sql语句组成的执行单元,要么全部执行,要么全部不执行,若某一条失败,则会回滚(如:转账)
存储引擎(表类型):在mysql中的数据用不同的技术存储在文件(或内存)中。可以使用SHOW ENGINES,来查看mysql支持的存储引擎。
INNODB支持事务,MYISAM、MEMORY不支持事务

事务的ACID属性

①原子性(Atomicity):事务是一个不可分割的工作单位
②一致性(Consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态
③隔离性(Isolation):一个事务内部的操作及使用的数据对并发的其他事务时隔离的,不能互相干扰(受隔离级别影响)
④持久性(Durability):一个事务一旦被提交,对数据库中数据的改变就是永久性的

事务的创建

隐式事务:事务没有明显的开启和结束的标记,如一个简单的sql语句
ps:可通过 SHOW VARIABLES LIKE ‘autocommit’ 可以发现事务是默认提交的
显式事务:事务具有明显的开启和结束的标记,必须先设置自动提交功能为禁用
①开启事务:set autocommit = 0; start transaction;(可选)
②编写事务中的sql语句
③结束事务:commit;进行提交 rollback;出错回滚

数据库的隔离级别(同时开启两个事务T1、T2)

①脏读:T1读取了已经被T2更新但还没提交的字段,若T2回滚,则T1读取的内容就是临时且无效的

②不可重复读:T1读取一个字段后,T2更新该字段,T1再次读取同一个字段时,值就不同了
Ps:可将第一次查询的数据进行上锁来避免

③幻读:T1从一个表中读取一个字段后,T2在该表中插入/删除了一些新的行,若T1再次读取同一个表,就会多出几行
Ps:由于查询涉及的数据较多(需将整个表上锁),所以不好解决

数据库事务的隔离性:数据库系统必须具有隔离并发运行各个事务的能力,使他们不会互相影响,避免并发
四种隔离级别:
READ UNCOMMITTED(读未提交:①②③)
READ COMMITTED(读已提交:②③)
REPEATABLE READ (可重复读:③)
SERIALIZABLE (串行化:全可避免,相当于加锁)

ORACEL:支持两种事务隔离级别:READ COMMITED、SERIALIZABLE,默认为READ COMMITED
MYSQL:支持四种事务隔离级别:默认为:REPEATABLE READ
PS:SELECT @@transaction_isolation (8.0+新变量名) #查看数据库当前的隔离级别
SET SESSION(只针对当前连接,GLOBAl关键字针对所有连接) TRANSACTION ISOLATION LEVEL 隔离级别 #更改隔离级别

Tips:事务回滚只对CRUD有效,对DDL语句无效

节点

SAVEPOINT 节点名; #设置保存点
ROLLBACK TO 节点名; #回滚到保存点
RELEASE SAVEPOINT 节点名; #删除保存点

DELETE 和 TRUNCATE 在使用事务时的区别

①DELETE语句是数据库操作语言(DML),这个操作会放到rollback segment 中,事务提交之后才生效,可以进行回滚,如果有相应的 trigger,执行的时候将被触发。
②TRUNCATE是数据库定义语言(DDL),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger

MySQL之TCL(事务控制)语句相关推荐

  1. php中对MYSQL操作之事务控制,回滚

    <?php //事务控制,回滚 //创建一个mysqli对象 $mysqli = new MySQLi("主机名","mysql用户名","密码 ...

  2. 十八、MySQL之TCL事务控制语言(详解)

    TCL : Transaction Control Language 事务控制语言 零.MySQL 中的存储引擎 1.概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中. 2.通过sho ...

  3. mysql dbi_mysql DBI 事务控制

    事务: 事务是任何健壮数据库系统的基本组成,它们 防止错误和数据库腐败通过确保有关数据的改变是原子发生的(不可分割的,要么所有要么什么都不做) 这个章节应用于数据库支持事务和 AutoCommit 是 ...

  4. 〖Python 数据库开发实战 - Python与MySQL交互篇③〗- MySQL Connector的事务控制与异常处理

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  5. 10.MYSQL:什么是事务?事务的性质?事务的应用?

    所谓事务,其实就是相当于操作系统里的原子性操作.它将一组对于数据库表的操作绑定在一起,只有所有操作都成功,才提交,只要有一个操作失败的话,那么就不会提交.这样的机制保证了数据库数据的原子性.一致性.隔 ...

  6. php mysql 嫦娥,介绍MySQL和JDBC的事务控制(TCL)

    文章目录一.MySQL的事务控制(Transaction Control Language) (1)事务的特性(ACID) (2)MySQL的事务控制 (3)mysql事务演示 二.JDBC的事务控制 ...

  7. mysql执行事务的语句_详解MySQL执行事务的语法和流程

    摘要:MySQL 提供了多种存储引擎来支持事务. MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 ...

  8. 14 事务控制和锁定语句

    MySQL支持的锁定 : a.表级锁定 : MyISAM 和 MEMORY b.页级锁定 : BDB c.行级锁定 : InnoDB 默认情况下,表锁和行锁都是自动获得的,不需要额外命令. 有些情况下 ...

  9. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...

    一.TCL事务控制语言 ###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. ...

  10. MySQL索引创建、删除及事务控制

    文章目录 一.索引概述 二.索引的优点与缺点 三.创建索引的原则依据 四.索引的分类与创建 4.1 索引的分类 4.2 索引的创建 4.2.1 普通索引 4.2.2 唯一索引 4.2.3 全文索引 4 ...

最新文章

  1. Python---20行代码爬取斗鱼平台房间数据(上)
  2. ASP.NET MVC4学习笔记之Controller的激活
  3. 日照油库系统推荐_生产车间用什么地坪好?这款地面硬化系统使用一年后获车间主任点赞:太省心!| 项目回访...
  4. TP查看已部署的TP框架的版本
  5. 系统架构师 项目经理 哪个更有前景_中央空调加地暖与五恒系统,哪个更省钱?...
  6. 利用结构体数组实现重排序(详解)
  7. LeetCode(109):有序链表转换二叉搜索树
  8. java web权限设计_java web简单权限管理设计
  9. SAP License:求职最受欢迎的十大技能
  10. python的第三方库是干什么用的-python一些工作用到的第三方库
  11. SD卡无法格式化怎么办?解决方法免费分享
  12. 进销存excel_还在用Excel处理进销存?推荐4个免费库存管理软件
  13. SP namespace (sp.js)
  14. Could not find module ‘xxx‘ for target ‘xxx‘; found: i386, x86_64-apple-ios-simula错误解决
  15. 如何找到CPU飙升的原因
  16. python转cython_说说cython的缺点
  17. 常说的LDO电路是啥?(简单版)
  18. java poi excel导出2003版改成2007版本的时候报错
  19. FFmpeg c++ 报错合集
  20. ImGUI 1.87 绘制D3D外部菜单

热门文章

  1. js lottie 兼容 json、图片缓存问题、修改文字,图片
  2. 【Java】数组元素的赋值与输出
  3. C#LeetCode刷题-字符串
  4. javascript中索引_如何在JavaScript中找到数字在数组中所属的索引
  5. 最小的linux服务器_学习以最小的努力构建GraphQL服务器
  6. ubuntu16.04备份和恢复系统
  7. Django框架——视图
  8. 数据完整性(python 版)
  9. shell编程之进阶篇一表达式
  10. 小程序tab切换效果