簡單說下mysql本地事務

2021-09-28 18:25:56 字數 649 閱讀 4564

1、幾種事務問題

(1)髒讀:事務a讀取事務b修改的資料,然後事務b進行了事務回滾,導致事務a讀取到。

(2)不可重複讀:事務a多次讀取乙個資料,在事務a讀取的期間,事務b對這個資料做了修改,並且提交,導致事務a多次讀取的資料前後不一致。

(3)幻讀:事務a對錶中符合條件的多條資料(或者全表)做資料修改,這時事務b插入一條新資料或者刪除了其中一條資料,導致最後修改完與預期的結果不一致。

2、mysq的事務隔離級別

事務隔離級別

髒讀不可重複讀

幻讀讀未提交(read-uncommitted)是是

是不可重複讀(read-committed)否是

是可重複讀(repeatable-read)否否

是序列化(serializable)否否

否mysql預設的事務隔離級別為repeatable-read

3、原理:

1、事務的隔離級別為不可重複讀時,寫操作會鎖住相應的行

2、可重複讀使用了mvcc機制,select查詢操作不會更新版本號,是快照讀(歷史版本)。insert,update,delete操作會更新版本號,採用當前讀(當前版本)

3、事務隔離級別為序列化時,讀寫操作都會鎖表

總結:事務的隔離級別越高,對於資料的安全性越好,但是併發效能越差。

簡單說下docker的pull 和 push

pull 映象的元資訊與映象層資料分開儲存,當 pull 乙個映象時,先進行認證獲取到 token 並授權通過,然後獲取映象的 manifest 檔案,進行 signature 校驗。校驗完成後,依據 manifest 裡的層資訊併發拉 取各層。其中 manifest 包含的資訊有 倉庫名稱 tag...

簡單說下js閉包之setTimeout

今天寫 的時候發現 網頁上很多彈窗需要自動關閉 倒計時5秒之後使用者無操作就關閉了,angular 框架 如下,一 for var i 5 i 0 i i i 1000 輸出結果是 二 稍加改動,去掉函式 如下所示 for var i 5 i 0 i i i 1000 依然能夠正常使用 三 func...

簡單說下COALESCE這個日常使用的函式

coalesce 作用是返回第乙個非空的值。select coalesce null,null,a cc a 原理的話其實也是相當於 case when a is not null then a when b is not null then b else n end 對於簡化 來說確實不錯 總結下...