14.2.2 The InnoDB Transaction Model and Locking InnoDB 事务模型和锁定

14.2.2 The InnoDB Transaction Model and Locking InnoDB 事务模型和锁定

14.2.2.1 InnoDB Lock Modes
14.2.2.2 Consistent Nonlocking Reads
14.2.2.3 Locking Reads (SELECT … FOR UPDATE and SELECT … LOCK IN SHARE MODE)
14.2.2.4 InnoDB Record, Gap, and Next-Key Locks
14.2.2.5 Avoiding the Phantom Problem Using Next-Key Locking
14.2.2.6 Locks Set by Different SQL Statements in InnoDB
14.2.2.7 Implicit Transaction Commit and Rollback
14.2.2.8 Deadlock Detection and Rollback
14.2.2.9 How to Cope with Deadlocks

实施一个大规模的,繁忙的,或者高度可靠的数据库应用,从一个不同的数据库系统 大量代码,

或者调整MySQL的性能,你必须了解交易的概念和锁 他们一来的InnoDB 存储引擎:

在InnoDB事务模型,目的是集合一个多版本的数据库 传统的2阶段锁的最好的特性。

InnoDB 锁定在行级别,运行查询不锁定一致性读 默认的,

在Oracle数据库里. lock 信息在InnoDB 是被存储,因此存储有效的 锁升级是不需要的。

典型的,多个用户是不允许锁定每行在InnoDB 表里,或者 任何随机的数据子集,没有造成InnoDB 内存耗尽。

在InnoDB里,所有的用户的活动发生在一个交易。如果 autocommit mode 是启用,

每个SQL 语句构成一个单独的事务。默认情况下,MySQL 开启每个新的连接 启用自动提交,

MySQL 在每个语句后提交 如果语句不返回错误, 如果语句返回一个错误,提交或者回滚依赖错误。 See Section 14.18.4,

“InnoDB Error Handling”.

一个会话启用自动提交,可以执行多个语句在一个事务里通过 启动一个显示的START TRANSACTION

或者BEGIN 语句和用COMMIT或者ROLLBACK 语句结束。See Section 13.3.1, “START TRANSACTION, COMMIT, and ROLLBACK

Syntax”.

如果自动提交模式是关闭 ,session 级别设置为SET autocommit = 0,

session总是打开一个事务。 一个COMMIT 或者ROLLBACK 语句结束当前的事务和一个新的开始。

一个COMMIT 意味着 在当前会话里的改变变得永久性的 ,对其他会话可见。

一个ROLLBACK 语句, 换句话说, 取消当前事务里的所有修改。

COMMIT和ROLLBACK 都会释放当前回鹘的所有的InnoDB 锁。

在SQL:1992 术语事务隔离基本,默认的InnoDB 是可重复读的。InnoDB 提供所有的4种事务隔离级别

READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, and SERIALIZABLE.

用户可以改变实例隔离级别 对于一个单独的会话或者对于所有的随后的连接 使用SET TRANSACTION 语句。

来设置server的默认隔离级别对于所有的连接,使用 –transaction-isolation 选项在命令行或者选项文件

For detailed information about isolation levels and level-setting syntax, see Section 13.3.6, “SET TRANSACTION

Syntax”.

在行锁级别,InnoDB 通常使用next-key locking.这意味着除了index 记录,

InnoDB 也可以锁定 一个索引的记录来阻止其他会话的插入 当索引的值需要被插入到gap

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值