之前網上查了好多關於髒讀、不可重複讀、幻讀的定義,各有千秋,今天聽老師講課,終於聽到了權威的一版,在此記錄:
前提:至少兩個事物
髒讀: 一個事物讀了另一個事物***未提交***的數據(未提交的數據稱爲髒數據)
不可重複讀:一個事物讀了另一個事物***已提交***的修改或刪除的數據
幻讀:一個事物讀了另一個事物***已提交***的新增的數據
解決辦法:
Mysql的innoDB對事物隔離級別的支持
RR和RC對MVCC的支持程度:
RC(read Commit)還是會出現幻讀的原因:
大部分場景下,它不支持間隙鎖,而RR支持間隙鎖,不會出現幻讀;
RR可以解決不可重複讀,而RC不可以的原因:
RR讀取到的數據是第一次查詢之前的所有數據,RC讀取到的是目前的查詢之前所有數據。