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;
在新窗口再次查询,哈,果然有数据了。
这次实践才对书里面的一些话有了真正的了解。还是要多实践啊