併發帶來的問題,
更新丟失舉個栗子
比如5000塊錢,2個人同時操作,你存500我存1000,那麼結果是6000,那500的更新丟失了,少了500塊,所以才需要排他鎖,同一時間,只能乙個人獨佔資料,其他人要改必須要等我改完;
當sql server準備更新資料時,它首先對資料物件作更新鎖鎖定,這樣資料將不能被修改,但可以讀取。等到sql server確定要進行更新資料操作時,他會自動將更新鎖換為獨佔鎖,當物件上有其他鎖存在時,無法對其加更新鎖。
不管是更新、還是刪除 都需要先去查詢的
然後呢,為了提高資料可用性,所以用u鎖。。意思就是,我現在在查詢,但是等下要更新,所以你們查可以,但是如果你們要更新之類的,那要等我先更新完
舉個例子,就是update其實是分為2步,
1.首先會查出需要update的資料行(這個查詢過程只會對這些行加s鎖)
2.查完之後,開始更新(這個更新時,s鎖會變成x鎖,這個時候其他執行緒都不允許增刪查改)
這整個乙個過程,就叫u鎖
包含關係,更新鎖包含 s 和 x,u鎖並沒有實際意義,核心還是s 和 x;
MySQL的MyISAM和InnoDB的區別
mysql預設採用的是myisam。myisam不支援事務,而innodb支援。innodb的autocommit預設是開啟的,即每條sql語句會預設被封裝成乙個事務,自動提交,這樣會影響速度,所以最好是把多條sql語句顯示放在begin和commit之間,組成乙個事務去提交。innodb支援資料行...
mysql 的Myisam和InnoDB的索引結構
先建立兩個表 1.myisam myisam的資料檔案是三個,乙個是原資料和結構,乙個是索引,乙個是資料,大家在建立好之後可以看在資料檔案裡面看下 左側是主鍵的索引結構,b tree,葉子節點 最下層 儲存的是資料位址,通過查詢條件查詢的時候,查詢的是資料位址,通過資料位址拿到資料,右側是普通索引,...
mysql中innodb和MyISAM的儲存
一 零鋪墊 在介紹b樹之前,先來看另一棵神奇的樹 二叉排序樹 binary sort tree 首先它是一棵樹,二叉 這個描述已經很明顯了,就是樹上的一根樹枝開兩個叉,於是遞迴下來就是二叉樹了 下圖所示 而這棵樹上的節點是已經排好序的,具體的排序規則如下 從圖中可以看出,二叉排序樹組織資料時,用於查...