[译]事务隔离级别

2017-09-16  本文已影响18人  wangjie_yy

原文地址Transaction Isolation Levels

事务隔离级别

事务隔离是数据库基础能力之一。隔离(Isolation)表示ACID中的I;隔离级别是一个配置项,它可以用于调整当多个事务同时进行更新和查询操作时,MySQL的性能和可靠性、一致性、结果的可重复性之间的平衡。

InnoDB提供了四种隔离级别,SQL:1992标准中描述了这个四个级别:未提交读(READ_UNCOMMITTED),提交读(READ_COMMITTED),可重复读(REPEATABLE_READ),串行化(SERIALIZABLE)。InnoDB的默认级别是可重复读(REPEATABLE_READ)。

用户可以使用SET_TRANSACTION语句来更改当前会话中的隔离级别。如果要更改全局的隔离级别,对所有会话生效,在命令行或者配置文件中使用--transaction-isolation选项。更多隔离级别的设置语法,可以查看SET TRANSACTION Syntax

InnoDB使用不同的锁机制来实现上述不同的隔离级别。对于需要保证ACID重要数据上的操作,可以使用默认的REPEATABLE_READ实现高级别的一致性。对于精确的一致性和结果可重复性要求不那么高的情形,比如大量数据的操作,减少锁的数量更加重要,这种情况下可以使用READ_COMMITTED甚至READ_UNCOMMITTED来降低一致性。SERIALIZABLE实现了比REPEATED_READ更严格的规则,它主要用于一些特殊的场合,比如XA事务,以及解决并发和死锁相关问题。

以下描述了MySQL如何支持不同的隔离级别。顺序按照最常用到最不常用的。

上一篇下一篇

猜你喜欢

热点阅读