1.悲觀鎖(Pessimistic Lock)
最簡單的理解:
顧名思義,就是很悲觀,每次去拿數據的時候都認爲別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關係型數據庫裏邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。
2.樂觀鎖(Optimistic Lock)
顧名思義,就是很悲觀,每次去拿數據的時候都認爲別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關係型數據庫裏邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。
MySQL表級鎖的鎖模式
MyISAM在執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,
在執行更新操作(DML)前,會自動給涉及的表加寫鎖。
所以對MyISAM表進行操作,會有以下情況:
a、對MyISAM表的讀操作(加讀鎖),不會阻塞其他進程(會話)對同一表的讀請求,
但會阻塞對同一表的寫請求。只有當讀鎖釋放後,纔會執行其它進程的寫操作。
b、對MyISAM表的寫操作(加寫鎖),會阻塞其他進程(會話)對同一表的讀和寫操作,
只有當寫鎖釋放後,纔會執行其它進程的讀寫操作。