mysql transaction 实践小问题

看了一些关于事务的理论的知识,想着自己亲自尝试一下。

首先开始一个事务

我先创建一个表

create table test1(id int);

然后开始一个事务

start transaction;

insert into test1 values(1);

select * from test1;

这里我发现当我执行select 的时候竟然可以查到数据,不是说事务只有显示的commit以后才能真正的写到数据库吗?

我反复试了几次都是一样,我有想到了另一个知识点,难道是隔离级别的问题,有一个隔离级别是read uncommit

所以我有 看了一眼隔离级别

select @@tx_isolation;

 

显示的是 REPEATABLE-READ 这个隔离级别是innodb默认的,不会出现上面的情况。所以也不是这个问题。

 

突然我又想到了一句话,一个线程的事务是对其他线程有隔离级别的

 

我开了一个新窗口

 

select * from test1;

 

果然没有数据

 

当我在上面的事务里面补上了commit;

 

在新窗口再次查询,哈,果然有数据了。

 

这次实践才对书里面的一些话有了真正的了解。还是要多实践啊

 

 

 

 

posted @ 2018-11-07 11:27  远途  阅读(215)  评论(0编辑  收藏  举报