zoukankan      html  css  js  c++  java
  • 深入浅出Mysql——事务控制和锁定语句

    Mysql支持对MyISAM进行表级锁定,对InnoDB存储引擎支持行级锁定。  

    LOCK TABLES可以锁定用于当前线程的表,如果表被其他线程锁定,则当前线程会等待,直到可以获取所有锁定为止。

    UNLOCK TBALES可以释放当前线程获得的任何锁定,当前线程执行另一个LOCK TABLES时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含的解锁

    START TRANSACTION或BEGIN语句可以开始一项新的事务

    COMMIT和ROLLBACK用来提交或者回滚事务

    CHAIN和RELEASE子句分别用来定义在事务提交或者回滚之后的操作,CHAIN会立即启动一个新事物,并且和刚才的事务具有相同的隔离级别,RELEASE则会断开和客户端的连接

    SET AUTOCOMMIT可以修改当前连接的提交方式,如果设置了SET AUTOCOMMIT=0,则设置之后的所有事务都需要通过明确的命令进行提交或者回滚

    如果在提交的时候使用COMMIT AND CHAIN,那么会在提交后立即开始一个新的事务(新事务不提交)。

    分布式事务的使用:

    XA START xid用于启动一个带给定xid值的XA事务(分布式事务)。

    xid:gtrid,bqual,formatID

    gtrid是一个分布式事务标识符,相同的分布式事务应该使用相同的gtrid,这样可以明确知道XA事务属于哪个分布式事务

    bqual是一个分支限定符,默认值为空串,对于一个分布式事务中的每个分支事务,bqual值必须是唯一的

    formatID是一个数字,用于标识由gtrid和bqual值使用的格式,默认值是1

    XA END xid

    XA PREPARE xid

    使事务进入PREPARE状态,也就是两阶段提交的第一个提交阶段。

    XA COMMIT xid

    XA ROLLBACK xid

    这两个命令用来提交或者回滚具体的事务,也就是两阶段提交的第二个提交阶段,分支事务被实际地提交或者回滚。

    XA RECOVER 

    XA RECOVER返回当前数据库中处于PREPARE状态的分支事务的详细信息。

    如果分支事务在达到prepare状态时,数据库异常重新启动,服务器重新启动以后,可以继续对分支事务进行提交或者回滚操作,但是提交的事务没有写binlog,存在一定隐患,可能导致使用binlog回复丢失部分数据。

  • 相关阅读:
    VS2008 SP1 安装时异常处理
    Android和iOS自带的人脸检测API
    FAAST 0.08 动作列表
    C#日期格式化(转)
    希望看这篇文章的人,耐心的看完这个短片
    C#实现转换十六进制
    App Store生存法则:iOS开发者经验分享
    开始的关键不是什么时候开始 而是开始后的坚持
    Eclipse IDE
    最近需要看的网站
  • 原文地址:https://www.cnblogs.com/Edword-ty/p/11000708.html
Copyright © 2011-2022 走看看