• 登录
  • Subscribe RSS Feed
 

'Transaction Isolation' Tag

  • 【MySQL】Innodb事务隔离级别

    03月 3, 2011

    一、事务隔离级别 ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serializable)。 对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面3种现在: 1、脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据。 2、非重复读(nonrepeatable read):在同一个事务中,同一个查询在T1时间读取某一行,在T2时间重新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。 3、幻像读(phantom read):在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集。 不同的隔离级别有不同的现象,并有不同的锁定/并发机制,隔离级别越高,数据库的并发性就越差,4种事务隔离级别分别表现的现象如下表: 隔离级别 脏读 非重复读 幻像读 read uncommitted 允许 允许 允许 read committed 允许 允许 repeatable read 允许 serializable 二、数据库中的默认事务隔离级别 在Oracle中默认的事务隔离级别是提交读(read committed)。 对于MySQL的Innodb的默认事务隔离级别是重复读(repeatable read)。可以通过下面的命令查看: mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation; +-----------------------+-----------------+ | @@GLOBAL.tx_isolation | @@tx_isolation  | +-----------------------+-----------------+ | REPEATABLE-READ | REPEATABLE-READ | +-----------------------+-----------------+ 1 row [...]

 
Powered by BlogCN.com - WordPress and MySQL. Theme by Shlomi Noach, openark.org