mysql事物中行鎖與表鎖

2022-07-26 18:12:12 字數 851 閱讀 3603

事物與鎖

什麼叫不支援事物: 

首先要了解資料庫裡的事務是什麼意思。事務在計算機資料庫裡 :在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元(unit)。在關聯式資料庫中,乙個事務可以是一條sql語句,一組sql語句或整個程式。簡單的講 舉例來說:a 匯100塊錢給 b,a 減少100 ,b增加100, 這是乙個事務,只要中間有任何錯誤,這個事務的所有操作都要撤銷。所以myisam不支援事務就是這個意思,需要程式進行撤銷操作。innodb 是支援事務的。

innodb儲存引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比myisam的儲存引擎,innodb寫的處理效率差一些並且會占用更多的磁碟空間以保留資料和索引。

當執行事務時,相當於執行了鎖,來保持資料的一致性,但是鎖分多種,有行鎖,表鎖。行鎖就是只鎖定那一行,那一條記錄,別的連線下的操作還可以操作這張表。表鎖就是鎖定整張表,只有當前連線執行完事務,才可以解鎖。

就效率而然,當然是行鎖好,適用與多執行緒和高併發的情況,不過行鎖對資料庫會帶來額外的開銷。表鎖高併發就差一點了,但單個的話快一點。

以mysql

為例,有索引並且使用了該索引當條件的時候就是行鎖,沒有索引的時候就是表鎖。

innodb 

的行鎖是在有索引的情況下

,沒有索引的表是鎖定全表的

.鎖是對於別的連線來說,不是對於當前連線,即當前連可以一直不加rollback

,commit

,一路更新,但是別的連線就不行,必須等加了鎖的連線釋放。(

rollback

,commit

)後才能更新,插入

建議:對於插入操作,一般加表鎖,但是對於修改和刪除操作,最好加行鎖,這樣在高併發時,不用等太久。

mysql事物鎖鎖表 mysql 事務 行鎖 表鎖

一 準備 select from information schema.innodb trx 查詢事務 select from information schema.innodb locks 查詢鎖 select from information schema.innodb lock waits 暫...

Mysql 鎖和事物

1.共享鎖 讀鎖 讀鎖允許多個連線可以同一時刻併發的讀取同一資源,互不干擾 2.排他鎖 寫鎖 寫鎖會阻塞其他的寫鎖或讀鎖,保證同一時刻只有乙個連線可以寫入資料,同時防止其他使用者對這個資料的讀寫 3.鎖策略 保證了執行緒安全的同時獲取最大的效能之間的平衡策略,因為鎖的開銷是較為昂貴的 a.表鎖 my...

Mysql行鎖與表鎖

用主鍵修改就是行瑣,或者用索引修改就是行瑣 update tab set name xx where id xx 行鎖 update tab set name xx where date 非主鍵或索引 xx 表鎖 插入的時候呢?插入都是行鎖 alert語句修改表結構,表鎖 表鎖和行鎖同時發生時,會等...