mysql开始新事物语句_深入浅出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回复丢失部分数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值