天天看點

MySQL表鎖,以為自己懂了,結果一個答對的都沒有!!!

關于MySQL的如下問題,你能準确的答出來麼?

(1)和行鎖相比,表鎖有什麼優勢?

(2)頻繁group by的業務,用MyISAM更好,還是InnoDB更好,為什麼?

(3)某個session占有了表寫鎖,有另外N個session又要對表進行寫操作,MySQL是如何處理的?

(4)某個session釋放了表寫鎖,有另外N個session要對表進行寫操作,同時還有M個session要對表進行讀操作,誰先搶到鎖,為什麼?

(5)如何判斷表鎖是不是主要沖突點?

(6)如何高效的實作并發插入與查詢,如何互斥?

(7)MyISAM什麼情況下,資料檔案會出現空洞?

(8)MyISAM,假如資料檔案有空洞,新插入的資料是先補上空洞,還是插入在檔案尾部?

《頻繁插入(insert)的業務,用什麼存儲引擎更合适?》

,上述問題都是小case。畫外音:可以跳回原文去找答案。 從評論留言來看,不少同學的回報是:

“…文章太容易了…”

“…MyISAM過時了…”

聽了大家的回報,我起初是抱歉,以為聊了一個大家都非常清楚的話題,浪費了大家的時間。 可是,從作業題的評論情況來看:

MySQL表鎖,以為自己懂了,結果一個答對的都沒有!!!

竟然沒有一個同學答對!!!畫外音:可以跳回原文去看評論,很遺憾一個offer都發不出去。 當然,可能會有朋友說,你亂出題,你的答案靠譜麼。這樣,這次我直接貼MySQL官網的截圖吧:

MySQL表鎖,以為自己懂了,結果一個答對的都沒有!!!

通常情況下,下列四種情況,表鎖會優于行鎖:…這些情況,用更粗粒度的鎖,更易于應用程式調優,因為鎖開銷會比行鎖更小。畫外音:英文不好,翻譯不對的大家提出。

很多時候,我們以為自己懂了,其實懂的不透徹。

很多時候,思路比結論重要,MyISAM确實作在不是主流,但其中的技術思路,也值得我們學習。

本文轉自“架構師之路”公衆号,58沈劍提供。