Mysql+Java+事务隔离,实验记录

来源:互联网 发布:战地1淘宝哪个比较安全 编辑:程序博客网 时间:2024/05/02 03:09

SQL语句:SELECT ... FROM ... WHERE

隔离级别:Connection.TRANSACTION_SERIALIZABLE

底层锁操作:

向‘被查询的数据记录’追加‘写-行锁’。即,被查询的数据记录可以被其它线程中的程序查询,但是不能被修改。

-------------------------------------------------------------------------------------------------------------------

SQL语句:SELECT ... FROM ... WHERE ... FOR UPDATE

隔离级别:Connection.TRANSACTION_SERIALIZABLE

底层锁操作:

向‘被查询的数据记录’追加‘读/写-行锁’。即,被查询的数据记录不能被其它线程中的程序查询,也不能被修改。


SQL语句:SELECT ... FROM ... WHERE

隔离级别:Connection.TRANSACTION_REPEATABLE_READ

底层锁操作:

不向‘被查询的数据记录’追加任何‘锁’。但是,此锁可以保证数据的可重复读。

-------------------------------------------------------------------------------------------------------------------

SQL语句:SELECT ... FROM ... WHERE ... FOR UPDATE

隔离级别:Connection.TRANSACTION_REPEATABLE_READ

底层锁操作:

向‘被查询的数据记录’追加任何‘写-行锁’。同时,此锁可以保证数据的可重复读。


 SQL语句:SELECT ... FROM ... WHERE

隔离级别:Connection.TRANSACTION_READ_COMMITTED

底层锁操作:

不向‘被查询的数据记录’追加任何‘锁’。但是,此锁可以保证不发生数据脏读。

-------------------------------------------------------------------------------------------------------------------

SQL语句:SELECT ... FROM ... WHERE ... FOR UPDATE

隔离级别:Connection.TRANSACTION_READ_COMMITTED

底层锁操作:

向‘被查询的数据记录’追加任何‘写-行锁’。同时,此锁可以保证数据的可重复读和不发生数据脏读。


 

SQL语句:SELECT ... FROM ... WHERE

隔离级别:Connection.TRANSACTION_READ_UNCOMMITTED

底层锁操作:

不向‘被查询的数据记录’追加任何‘锁’。同时,不做任何的事务隔离。

-------------------------------------------------------------------------------------------------------------------

SQL语句:SELECT ... FROM ... WHERE ... FOR UPDATE

隔离级别:Connection.TRANSACTION_READ_UNCOMMITTED

底层锁操作:

向‘被查询的数据记录’追加任何‘写-行锁’。同时,此锁可以保证数据的可重复读和不发生数据脏读。


 

 事务的‘读/写行锁’,‘写行锁’都会随着

1.事务提交

2.事务回滚

3.数据库连接对象的关闭

而被释放。