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/