1. 程式人生 > 其它 >資料庫常用性知識總結

資料庫常用性知識總結

資料庫常用性知識總結

什麼是資料庫事務?

資料庫事務,是獨立執行,並且可併發呼叫,並且事務具有頭唯一性,一致性。

基本性質

  • 原子性:要麼執行,要麼不執行
  • 一致性:只有合法資料才可以被寫入
  • 隔離性:每一個事務都是獨立的,可以併發去執行某一個事務
  • 永續性: 事務結束之後,處理解決必須固化,一旦事務被提交,對資料庫的改變是永久的。redis不支援,事務回滾

事務語句:

1、開始事務 begin transaction

2、提交事務 commit transaction

3、回滾事務 rollbask transaction

資料庫鎖機制

資料庫併發大的話,就要考慮鎖和鎖的效能問題,如果不控制的話,則會產生死鎖。

鎖機制就是在保證一個事務在沒釋放鎖之前,其它事務是不能提交更改的。

鎖型別

  • 悲觀鎖 :假設一個事務操作之前,防止資料衝突,會上鎖,不讓其它事務回修改資料並訪問這個某個資料。悲觀鎖會增加資料庫的開銷,會增加死鎖的發生,還會降低並行,一旦資料鎖定,後面的人必須排隊。
//0.開始事務
begin; 
//1.查詢出商品庫存資訊
select quantity from items where id=1 for update ;
//2.修改商品庫存為2
update items set quantity=2 where id = 1;
//3.提交事務 一般情況事務是自動提交的,如果有問題會自動回滾事務
commit;

以上,在對id = 1的記錄修改前,先通過for update的方式進行加鎖,然後再進行修改。這就是比較典型的悲觀鎖策略

  • 樂觀鎖 :在悲觀鎖的基礎上,認為資料一般不會衝突,只有在資料提交更新的時候,才會去校驗資料是否衝突,如衝突了,會返回錯誤資訊給使用者,讓使用者子判斷怎麼處理,它就不管了。

  • 共享鎖 :簡單來說就是共享,你能訪問到它的資源,我也能訪問

  • 排它鎖 : 如果我已經加鎖了,別人就不能加了

Mysql兩中引擎的區別

開開心心,上班! 快快樂樂,遊玩! 及時行樂!