MySql隔离级别多线程并发读取数据时的正确性
隔離級別 ???? 臟讀 ? 不可重復(fù)讀 ? 幻讀
讀未提交(Read uncommitted)? V? V?? V
讀已提交(Read committed)?? x? V?? V
可重復(fù)讀(Repeatable read)? ?x? x?? V
可串行化(Serializable )?? x ?x?? x
臟讀(dirty reads) ?
一個事務(wù)讀取了另一個未提交的并行事務(wù)寫的數(shù)據(jù)。
不可重復(fù)讀(non-repeatable reads)--【針對 update】 ?
一個事務(wù)重新讀取前面讀取過的數(shù)據(jù), 發(fā)現(xiàn)該數(shù)據(jù)已經(jīng)被另一個已提交的事務(wù)修改過。
幻讀(phantom read) --【針對 insert、delete】? ?
一個事務(wù)重新執(zhí)行一個查詢,返回一套符合查詢條件的[行], 發(fā)現(xiàn)這些行因?yàn)槠渌罱峤坏氖聞?wù)而發(fā)生了改變。
查看隔離級別:
?select @@tx_isolation;
設(shè)置隔離級別:
[建議Read committed] ?set transaction isolation level [read uncommitted || read committed || repeatable read || serializable ]
JAVA中設(shè)置隔離級別: ?
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
總結(jié)
以上是生活随笔為你收集整理的MySql隔离级别多线程并发读取数据时的正确性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PlateSpin forge V2P回
- 下一篇: TextBox和DataGridView