mysql - MySQL 中的事务

标签 mysql sql transactions rdbms

MySQL 将使用什么进行事务处理?MVCC(多版本并发控制)还是行级锁定
如果两者兼而有之,我们如何才能从一个转移到另一个。

最佳答案

这不取决于 MySQL 本身,而是取决于使用的引擎,例如InnoDB 或 MyIsam。


InnoDB 事务模型中,目标是将多版本数据库的最佳属性与传统的两阶段锁定相结合。 InnoDB 在行级别上锁定,默认情况下以非锁定一致读取的方式运行查询,这与 Oracle 的风格相同。 InnoDB 中的锁表存储非常节省空间,因此不需要锁升级:通常,允许多个用户锁定 InnoDB 表中的每一行,或行的任何随机子集,而不会导致 InnoDB 内存耗尽。

(来源:http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-model.html)


MySQL 对 MyISAM、MEMORY 和 MERGE 表使用表级锁定,一次只允许一个 session 更新这些表,使它们更适合只读、主要读取、或单用户应用程序。

(来源:http://dev.mysql.com/doc/refman/5.1/en/internal-locking.html)

关于mysql - MySQL 中的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175092/

相关文章:

sql - Postgres 计算条件下的总行数,但忽略限制和分组依据

c# - 单击即可创建多个 MySQL 插入(库存系统)

mysql - Sqoop: Could not load mysql driver 异常

php - Codeigniter Right Join with Where 条件未给出结果

mysql - 为什么这个 MySQL 查询即使有索引也要花这么长时间来排序?

java - 当 MySQL 中的事务回滚()失败时会发生什么?

mysql - 在 MySQL 中搜索分组列?

sql - 始终使用 nvarchar(MAX) 有什么缺点吗?

Mysql - 如何在指针上使用用户定义的变量

node.js - 设置 Firebase 事务的优先级( Node JavaScript)