innodb能夠替代myisam的原因有二:
傳統的關係型資料庫加鎖的乙個原則是:兩階段鎖原則。
兩階段鎖:鎖操作分為兩個階段,加鎖階段和解鎖階段,並且保證加鎖階段和解鎖階段不相交。
我們可以通過下面這張表理解兩階段鎖:
innodb實現了以下兩種型別的行鎖:
對於普通select語句,innodb不會加任何鎖,事務可以通過以下語句顯式給記錄集加共享鎖或排它鎖:
innodb行鎖的三種演算法:
不同事務隔離級別對應的行鎖也是不一樣的,mysql有4中事務隔離級別:
髒讀:讀取到未提交的資料
幻讀:乙個事務按照相同的查詢條件重新讀取以前檢索過的資料,卻發現其他事務插入了滿足其查詢條件的資料或者發現以前檢索過的資料發生了修改
Innodb 行鎖與表鎖
行鎖與表鎖 innodb預設是行級別的鎖,當有明確指定的主鍵時候,是行級鎖。否則是表級別。for update的注意點 for update 僅適用於innodb,並且必須開啟事務,在begin與commit之間才生效。要測試for update的鎖表情況,可以利用mysql的command mod...
mysql的innodb引擎和myisam引擎區別
首先innodb支援事務,可以進行事務的回滾,而myisam不支援事務 所以在更新比較多或者插入比較多的時候使用innodb 再者就是innodb支援的是行級鎖定 某些情況下會表級,例如出現以 開頭的模糊查詢 myisam支援的表級鎖定 表級鎖定和行級鎖定就從字面理解 即在進行表內資料的操作時,my...
MySQL的InnoDB引擎與MyISAM引擎
myisam 這個是預設型別,它是基於傳統的isam型別,isam是indexed sequential access method 有索引的順序訪問方法 的縮寫,它是儲存記錄和檔案的標準方法。與其他儲存引擎比較,myisam具有檢查和修復 的大多數工具。myisam 可以被壓縮,而且它們支援全文搜...