回答
A
row
對於發生重大數據修改的大型表格,表級鎖定效果更好。這可以讓系統與桌面上的單個鎖進行競爭,而不必處理巨大的鎖(每行一個鎖)。
RDBMS在內部自動升級鎖定級別。
我認爲你的意思是「表鎖越好.....」 – SQLMenace 2010-08-11 20:47:22
我認爲你的意思是「一排鎖更好......」:P – 2010-08-11 20:49:03
*(羞怯的笑容)*是的,我的意思是表.. – 2010-08-11 20:58:22
一般來說,如果你需要鎖定了大量的數據,那麼1鎖定在一個大表比行級鎖或頁鎖一大堆
行鎖定需要比表或頁級鎖定更多的內存。
有權獲得更多的鎖與行鎖定,這花費更多的資源
從http://www.devshed.com/c/a/MySQL/MySQL-Optimization-part-2/
優勢行級鎖定:
- 更少的鎖訪問多個線程中的不同行時發生衝突。
- 回滾更改較少。
- 可以長時間鎖定單行。
缺點行級鎖定:
- 花費的時間比頁級或表級鎖更多的內存。
- 由於您必須獲取更多鎖,所以在大部分表上使用時比頁級別或表級鎖定要慢。
- 如果您經常對大部分數據執行GROUP BY操作,或者您經常必須掃描整個表,那麼肯定比其他鎖更糟糕。
- 對於更高級別的鎖定,您還可以更輕鬆地支持不同類型的鎖定來調整應用程序,因爲鎖定開銷低於行級鎖定。
表鎖優於在下列情況下頁級或行級鎖:
- 爲表大多數陳述讀取。
- 閱讀和嚴格的密鑰,在這裏你更新或刪除可以用一個鍵讀取中獲取一個行更新:
UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
DELETE FROM tbl_name WHERE unique_key_col=key_value;
- 選擇具有並行的INSERT語句,極少UPDATE和DELETE語句結合。
- 許多掃描或GROUP BY操作在整個表上沒有任何作家。
表鎖定使許多會話在同一時間
從表中讀取要達到很高的鎖定速度,MySQL使用表鎖定
「我會假設行級鎖定更好,因爲「[你鎖定的數據少]。
在此頁面中,首先「更好」的定義很差。看起來好的意思是「更快」。
由於爭用鎖,行級鎖定不能(通常)更快。鎖定大型結果集的每一行意味着與另一個大型結果集查詢和回滾發生衝突的真實可能性。
- 1. 表級鎖定保證是什麼?
- 2. 在MySQL插入過程中,表級鎖定會鎖定什麼?
- 3. 爲什麼它更好地鎖定(objLock),比鎖(本)
- 4. 我需要行級鎖定
- 5. Django,innodb和行級鎖定
- 6. Nhibernate行級別鎖定
- 7. mariadb行級讀取鎖定
- 8. 將一個表鎖鎖定行鎖定
- 9. 優化程序將行級鎖升級到宏級中的表級鎖
- 10. Grails鎖定級別
- 11. 等待表級鎖
- 12. Java級別鎖定與對象級別鎖定
- 13. 大INNODB表鎖定
- 14. MySQL的 - 表鎖定VS行鎖定
- 15. 級別鎖定和解鎖統一
- 16. 是什麼讓SQL Server決定使用哪個鎖定級別(行,頁面或表鎖?)
- 17. InnoDB行級鎖定性能 - 多少行?
- 18. 爲什麼InterLocked比鎖定慢?
- 19. 休眠中的行級鎖定
- 20. 對象級別和類級別鎖定
- 21. MySQL寫鎖定優先級
- 22. MySQL鎖定優先級
- 23. Oracle死鎖沒有顯式鎖定和讀提交隔離級別,爲什麼?
- 24. C++ Boost ::線程可升級互斥鎖「嘗試升級鎖定」?
- 25. SplitButton鎖定 - 無法解鎖。爲什麼?
- 26. mySQL - 使用mysqli應用行級鎖定
- 27. 大型程序中的隔離級別或鎖定
- 28. 等待MySQL表中的表級鎖
- 29. 鎖定在ADO.NET中的表鎖定
- 30. 爲什麼鎖定錯誤?
我明白了。因此,如果它更像「對於大型結果集,表鎖定通常比行鎖定更好」或許會更好。 – 2010-08-11 21:32:14