5.6新支持START TRANSACTION READ ONLY;只读事务。那么START TRANSACTION和START TRANSACTION READ ONLY ,两个语句没啥区别啊。session2 更新,插入,删除,提交完后,session1的会话还是以前的数据。那么,在默认隔离级别下,到底有啥区别?还有,我修改READ-COMMITTED(ORACLE的隔离级别),开启START TRANSACTION READ ONLY,session2的写操作,session1(只读事务)确能看到。
http://blogs.innodb.com/wp/2011/12/better-scaling-of-read-only-workloads/增加只读事务的目的是为了判断这个事务是否是只读的,如果是只读的,则会将这个事务放在trx_sys_t::ro_trx_list中,减少copy trx_sys_t::rw_trx_list的开销以及锁导致的速度下降问题。主要的目标是为了提高性能。