MySQL支持的锁定 :
a.表级锁定 : MyISAM 和 MEMORY
b.页级锁定 : BDB
c.行级锁定 : InnoDB
默认情况下,表锁和行锁都是自动获得的,不需要额外命令.
有些情况下,用户需要明确地进行锁表或者进行事务的控制,确保事务的完整性.
1.LOCK TABLES 和 UNLOCK TABLES
LOCK TABLES 可以用于当前线程的表.如果表被其他线程锁定,当前线程会等待.
UNLOCK TBALES 可以释放当前线程获得的任何锁定.当线程执行另一个LOCK TABLES 或与服务器的连接关闭时,当前线程之前锁定的表被隐含的解锁.
LOCK TABLES
tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
[,tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY WRITE}]
...
UNLOCK TABLES
2.事务控制
MySQL通过 SET AUTOCOMMIT , START TRANSACTION , COMMIT , ROLLBACK等语句支持本地事务.
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0|1}
默认情况,MySQL是 AUTOCOMMIT , 
如果需要通过明确的 COMMIT 和 ROLLBACK来提交/回滚 事务, 那么需要通过明确的事务控制命令来开始事务(不同于ORACLE).
START TRANSACTION 或 BEGIN 语句来开始一项新的事务.
COMMIT , ROLLBACK 用来提交或回滚事务.
CHAIN 和 RELEASE子句 分别用来定义在事务提交或者回滚之后的操作.
CHAIN 会立即启动一个新事务,并且和刚才的事务具有相同的隔离级别.
RELEASE 则会断开和客户端的连接.
SET AUTOCOMMIT 可以修改当前连接的提交方式. 该值为0时 , 后面所有的事务都需要通过明确的命令进行提交/回滚.
如果只是对某些语句需要进行事务控制,则使用START TRANSACTION 语句开始一个事务比较方便,这样事务结束后可以自动回到自动提交的方式;
如果希望所有的事务都不是自动提交的,那么通过修改AUTOCOMMIT来控制事务比较方便,这样不用在每个事务开始的时候再执行 START TRANSACTION 语句.
在锁表期间,如果使用START TRANSACTION 开始一个新的事务,会造成一个隐含的UNLOCK TABLES 被执行.
另外,对LOCK 语句显示加的表锁 , 用ROLLBACK不起作用.
在同一事务中,最好不使用不同引擎的表,否则 ROLLBACK时,需要对非事务类型的表进行特别处理,因为 COMMIT/ROLLBACk 只能对事务类型的表进行提交和回滚.
与Oracle相同,所有的DDL语句是不能回滚,并且部分的DDL语句会造成隐式的提交.
在事务中可以通过定义SAVEPOINT 指定ROLLBACK事务的一部分,但不能指定COMMIT事务的一部分.
在复杂的应用中可以定义多个不同的SAVEPOINT ,满足不同的条件时,ROLLBACK 不同的SAVEPOINT .
需要注意,定义了相同名字的SAVEPOINT,后面定义的会覆盖之前定义的.
对于不再使用的SAVEPOINT , 可以通过RELEASE SAVEPOINT命令删除SAVEPOINT , 之后不能再执行 ROLLBACK TO SAVEPOINT 命令.
分布式事务的使用
在MySQL中,使用分布式的应用程序涉及一个或多个资源管理器和一个事务管理器.
资源管理器(RM) : 用于提供通向事务资源的途径.数据库服务器就是一种资源管理器.该管理器必须可以COMMIT/ROLLBACK由RM管理的事务.
事务管理器(TM) : 用于协调作为一个分布式事务一部分的事务.TM与管理每个事务的RMs进行通讯.一个分布式事务中各个单个事务军事分布式事务的"分支事务".分布式事务和个分支通过一种命名方法进行标识.
todooooooooooo  ...  

转载于:https://www.cnblogs.com/lmxxlm-123/p/11132121.html

14 事务控制和锁定语句相关推荐

  1. mysql 隐式提交事务_MySQL的SQL语句 -事务性语句和锁定语句(2)- 致使隐式提交的语句...

    致使隐式提交的语句html 本节中列出的语句(以及它们的任何同义词)隐式结束当前会话中活动的任何事务,就像在执行语句以前执行了 COMMIT 同样.mysql 大多数这些语句在执行后也会致使隐式提交. ...

  2. iBatis 事务控制 与 两表操作将SQL语句写入单表

    事务控制 示例: // move data from temp_table to work_tabletry {sqlMapClient.startTransaction();T03SlipWk or ...

  3. MySQL之TCL(事务控制)语句

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

  4. 摘录来自mysql 5.1的手册 关于mysql的事务处理和锁定语句

    START TRANSACTION, COMMIT和ROLLBACK语法 START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] ...

  5. PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

  6. SQL Server-流程控制 6,WaitFor 语句

    ylbtech-SQL Server:SQL Server-流程控制 6,WaitFor 语句 SQL Server 流程控制中的 WaitFor 语句. 1,WaitFor 语句 1 --===== ...

  7. 谈谈分布式事务之一:SOA需要怎样的事务控制方式

    在一个基于SOA架构的分布式系统体系中,服务(Service)成为了基本的功能提供单元,无论与业务流程无关的基础功能,还是具体的业务逻辑,均实现在相应的服务之中.服务对外提供统一的接口,服务之间采用标 ...

  8. php面向对象封装mysql_PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)...

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

  9. Spring中的事务控制

    Chapter 1. Spring中的事务控制(Transacion Management with Spring) Table of Contents 1.1. 有关事务(Transaction)的 ...

最新文章

  1. 股票实时行情数据大全
  2. python发送邮件及附件
  3. ip层和4层的接口实现分析
  4. 配置classpath,引入jar包
  5. 【NOIP2017】宝藏
  6. 苹果id是什么格式的_长春苹果x主板维修推荐,苹果ipad12.9死机,商业资讯
  7. ROS2入门教程—录制/回放数据
  8. Golang环境windows 设置 GOROOT 和 GOPATH
  9. 虫师带你入门Chrome Headless,从此爬虫0门槛!
  10. 【杂谈】概率与随机以及手游抽卡机制的科普
  11. 微信输出日志在电脑桌面
  12. 访问学者在德国访学,值得推荐的特色美食有哪些?
  13. assertThat断言测试方法
  14. 软件构造(Java)——50道100以内的加减法口算习题(升级版)
  15. SBFD(Seamless Bidirectional Forwarding Detection)
  16. 〖全域运营实战白宝书 - 运营角色认知篇⑤〗- “运营“ 是否有前途?
  17. 12月28日 OpenCV 实战基础学习笔记——疲劳检测
  18. 九龙证券|什么是庄家洗盘和出货?各有什么特征?
  19. MATLAB: 用MATLAB发送邮件(以163邮箱为例)
  20. [强化学习实战]函数近似方法-线性近似与函数近似的收敛性

热门文章

  1. 动态创建form传参
  2. (转)VC++多线程编程
  3. 笔记.NET基础知识05
  4. 归并法计算数组中的逆序数对
  5. Linux操作Oracle(5)——Oracle11g 卸载OPatch安装补丁的方法【rollback已安装的补丁】及报错问题解决
  6. jq使用教程08_基于估值波动周期的择时策略
  7. 帆软报表设计器菜单栏介绍之一
  8. 免费生成十字绣字体_十字绣鞋垫图案 手工鞋垫历史长
  9. python列表元素循环左移_JavaScript系列——数组元素左右移动N位算法实现
  10. PyTorch 学习笔记(六):PyTorch的十八个损失函数