我在網上看到一篇博客寫到:
“
當 SQL 陳述句無法使用索引時,會進行全表掃描,這個時候 MySQL 會給整張表的所有資料行加記錄鎖,再由 MySQL Server 層進行過濾。但是,在 MySQL Server 層進行過濾的時候,如果發現不滿足 WHERE 條件,會釋放對應記錄的鎖。這樣做,保證了最后只會持有滿足條件記錄上的鎖,但是每條記錄的加鎖操作還是不能省略的。
”
MySQL 使用 InnoDB 引擎時,當陳述句不走索引進而導致全表掃描時,是直接加表鎖?還是在每條記錄上加記錄鎖?還是MySQL中的表鎖就是用所有記錄的鎖形成的?
博客這段話是否正確,如果正確,按照我都理解,MySQL為表直接加鎖的代價難道不比給每個記錄都加鎖的代價小?
uj5u.com熱心網友回復:
是有可能,取了資料后會釋放表鎖轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/21117.html
標籤:疑難問題
上一篇:空字串的處理答案征集
