之前講了資料庫中的事務,為了讓事務順利執行,就有了鎖?
1:什麼是鎖?
顧名思義,就是防止保護被偷東西,那麼在資料庫中就是防止資料被偷也就是 資料不完整。
2:為什麼要用鎖? 因為有些時候會出錯,要保證資料正常不出現問題就需要鎖。
既然是防止資料被偷,那麼什麼情況下資料 會變得不完整呢? 一下就是錯誤例項:在多使用者都用事務同時訪問同乙個資料資源的情況下,就會造成以下幾種資料錯誤。
3:如何使用鎖?
了解鎖的種類:
什麼是死鎖?
乙個事務1是處理a 完事之後去查詢b ,另乙個事務2是處理b 完事去查詢a ,結果呢 事務1去查b 發現2用著,事務2去查a 發現1在用著,結果倆個人都在等著對方結束在進行,導致僵住。這樣相互等待對方釋放資源,造成資源讀寫擁擠堵塞的情況,就被稱為死鎖現象,也叫做阻塞。(好比過獨木橋都雙方卡在這了)
但是資料庫也不會一直讓他們等待,搜尋引擎會定期檢測這種狀況,一旦發現有情況,立馬選擇乙個事務作為犧牲品。犧牲的事務,將會回滾資料。如何選擇犧牲品用語句設定
set deadlock_priority級別的話 low然而我們也可以主動出擊,設定鎖超時時間,一旦資源被鎖定阻塞,超過設定的鎖定時間,阻塞語句自動取消,釋放資源,但是這種方式需要去程式處理之後的邏輯。
避免死鎖的話可以 看這篇文章
通俗易懂SQL server 中的索引
一 什麼是索引?資料庫索引其實就是類似目錄的乙個東西,搜尋的時候能夠引導你更好更快的查出來。主要目的是提高了sql server系統的效能,加快資料的查詢速度與減少系統的響應時間 二 為什麼要用索引?好的索引會讓資料查詢效率提高百倍,所以必要的情況下需要使用索引來提高速度。三 怎麼使用索引?1 索引...
通俗易懂SQL server 中的三大正規化
一 第一正規化 官方定義 資料庫表中的所有欄位都是單一屬性,不可再分的。強調的是列的原子性。白話 每一列都有自己的屬性說明,誰也幫不了誰,誰幹誰的活。清晰明了。二 第二正規化 官方定義 一是表必須有乙個主鍵 二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。白話 資料庫表中有倆...
SQLSERVER通俗易懂的連線查詢 聯合查詢
最近有好多小夥伴對連線查詢有很多的疑問,當然包括初學者和工作幾年的老鳥 首先建立兩個表,學生和班級表,乙個班級對應多個學生 新建學生表 select into student from select 1 as id 張三 as name 18 as age,1 as classid union se...