ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> MySql >> 事务隔离级别 mysql隔离级别

事务隔离级别 mysql隔离级别(2/5)

来源:网络整理     时间:2016-06-16     关键词:事务隔离级别

本篇文章主要介绍了"事务隔离级别 mysql隔离级别",主要涉及到事务隔离级别方面的内容,对于MySql感兴趣的同学可以参考一下: 原文链接 MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)。未提交读(READ UNCOMMITTED)。另...

mysql> show create table actor\G;
*************************** 1. row ***************************
       Table: actor
Create Table: CREATE TABLE `actor` (
  `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,  `first_name` varchar(45) NOT NULL,  `last_name` varchar(45) NOT NULL,  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`actor_id`),  KEY `idx_actor_last_name` (`last_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> select @@global.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+| @@global.tx_isolation | @@tx_isolation  |
+-----------------------+-----------------+| REPEATABLE-READ       | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)

试验一:

t Session A                   Session B
|
| STARTTRANSACTION;STARTTRANSACTION;
|
| select * from actor;
| empty set
|                             insertinto actor
|                             select * from sakila.actor limit 1;
|
| select * from actor;
| empty set
|                             COMMIT;
|
| select * from actor;
| empty set
|
| insertinto actor select * from sakila.actor limit 1;
| ERROR 1062 (23000):
| Duplicate entry '1' for key 'PRIMARY'
v (shit, 刚刚明明告诉我没有这条记录的)

如此就出现了幻读,以为表里没有数据,其实数据已经存在了,傻乎乎的提交后,才发现数据冲突了。

试验二:

事务隔离级别相关图片

事务隔离级别相关文章