我已经了解了四个隔离级别:
Isolation Level Dirty Read Nonrepeatable Read Phantom Read
READ UNCOMMITTED Permitted Permitted Permitted
READ COMMITTED -- Permitted Permitted
REPEATABLE READ -- -- Permitted
SERIALIZABLE -- -- --
我想了解每种事务隔离级别对表所施加的锁定作用。
READ UNCOMMITTED - no lock on table
READ COMMITTED - lock on committed data
REPEATABLE READ - lock on block of sql(which is selected by using select query)
SERIALIZABLE - lock on full table(on which Select query is fired)
以下是事务隔离中可能发生的三种现象:
脏读- 无锁
不可重复读- 在提交的数据上加锁,避免脏读
幻读- 对选择某个SQL块(使用select查询)进行锁定
我想了解这些隔离级别在哪里定义:仅在JDBC / Hibernate级别还是也在数据库中定义
备注:我已查看Oracle中的隔离级别链接,但它们看起来很混乱,并且只讨论特定于数据库的内容