多執行緒之樂觀悲觀鎖

2022-09-05 20:39:13 字數 409 閱讀 4835

樂觀鎖:認為資料修改產生衝突的概率並不大,所以不會先獲取鎖,一般都是使用版本號或者時間戳來標記,若a和b同時修改資料,當a修改完畢的同時將時間戳也替換為自己修改的時間戳,則b去修改時就會發現此條資料已經被修改過,則此次b則無法修改

優點:不對資料加鎖,只有在對資料進行修改操作時才會進行校驗不會影響伺服器效能,適用於查詢較多的業務場景

確定:因為是用過人為去操控的,如果有其餘非人為操控的事物混入則可能會發生一些錯誤

悲觀鎖:認為資料經常性的出現變動,會在修改前獲取鎖,使用其餘事物從而不能修改資料

優點:悲觀鎖利用資料庫中的鎖機制來實現資料變化的順序執行,鎖定指定的資料行,適用於修改較為頻繁的應用場景

缺點是:一旦加鎖以後,其他事物不能對加鎖資料進行除查詢以外的所有操作,如果當前事物執行週期較長,其他事物就會一直等待,影響效能。

悲觀鎖 面試必備之 樂觀鎖與悲觀鎖

一 什麼是悲觀鎖?什麼是樂觀鎖?1 鎖 lock 在介紹樂觀鎖和悲觀鎖之前,我們先介紹下鎖。在日常生活中,我們經常接觸到鎖這個東西,比如家裡門上的鎖,自行車上的鎖,保險櫃上的鎖等,這些都是為了保障我們的財產安全而上的鎖。而在程式中,鎖是一種保障資料安全的機制和手段。在多併發的情況,當同時多個請求修改...

Java多執行緒 樂觀鎖 悲觀鎖

悲觀鎖 pessimistic lock 顧名思義,就是很悲觀,每次去拿資料的時候都認為別人會修改,所以每次在拿資料的時候都會上鎖,這樣別人想拿這個資料就會block直到它拿到鎖。傳統的關係型資料庫裡邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。樂觀鎖 optim...

資料庫之樂觀鎖,悲觀鎖

樂觀鎖 1.只在提交操作時檢查是否違反資料完整性。使用自增長的整數表示資料版本號。更新時檢查版本號是否一致,比如資料庫中資料版本為6,更新提交時version 6 1,使用該version值 7 與資料庫version 1 7 作比較,如果相等,則可以更新,如果不等則有可能其他程式已更新該記錄,所以...