脏读:两个事物,一个事务修改数据 未提交;另一个事务查询数据
不可重复读:同一个事务,多次读取同数据结果不同(其实是另个一个事务修改了数据) ---对应的是修改
幻象读:同一个事务,多次读取一个范围的数据,读取的记录数不同---对应insert
读未提交 read uncommit:可以读未提交的数据
读提交 read commit:只有读提交过的数据
select * from table where id=1 for update
可重复读 reapeat read
序列化 serializable:
这是数据库最高的隔离级别,事务“串行化顺序执行”,
大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
READ UNCOMMITTED 幻象读、不可重复读和脏读都容许。
READ COMMITTED 容许幻象读、不可重复读,不容许脏读
REPEATABLE READ 容许幻象读,不容许不可重复读和脏读
SERIALIZABLE 幻象读、不可重复读和脏读都不容许
select * from A where id=2 for update skip locked
参考资料
基于oracle的sql优化 https://www.cnblogs.com/grl214/p/7694184.html