-
圖靈機:一個參數,經過一個算法,返回一個數據的過程
查看全部 -
2PL,2階段鎖。2 phrase lock
2PC,2階段提交事務,2 phrase commit
查看全部 -
MVCC:樂觀鎖
讓版本低的并發更新回滾,優勢是并發低時,性能好。代價是,并發高時,失敗率高,需要不斷重試
查看全部 -
死鎖擴展:U鎖
MVCC拾遺
Two Phase Lock (2PL)
查看全部 -
深度單擊事務-小結:
ACID,原子性,一致性,
????????????隔離性:讀已提交
????????????????????????? 讀未提交
????????????????????????? 可重復讀
????????????????????????? ?序列化讀
????????????????????????? ?擴展(快照隔離級別:MVCC / SNAPSHOT ISOLATION)用新方式實現傳統意義上讀未提交場景,同事保證可序列化的隔離級別。當寫大于讀時,會增加系統成本,MVCC適合讀比寫多的情況
????????持久性:1直接寫入內存:優點是IOPS高,缺點是可能丟失數據
????????????????????? 2 Group Commit ,將多次數據拼成一個包,優點是保證系統持久性和吞吐量,缺點是請求延遲提升。
查看全部 -
事務調優原則:
減少鎖的覆蓋范圍:
????????Mysiam 表鎖 -> Innodb 行鎖
????????原位鎖 -> MVCC多版本
增加鎖上可并行的線程數:
????????讀鎖寫鎖分離,允許并行讀取數據
????????多線程并行讀取
????????允許多人讀取
選擇正確鎖類型
????????悲觀鎖 使線程到blocking 狀態,CPU不會調度他,當通知給它信息為ok狀態時,切換回等待狀態,CPU可以對它進行調度。最大的特點就是,換入換出增加系統開銷。比較適合,并發爭搶比較嚴重的場景
????????樂觀鎖 ,適合并發爭搶不太嚴重的場景
查看全部 -
MVCC:可保證讀寫并行,寫讀并行
快照(snapshot isolation):針對度多寫少場景優化;并行度能達到或超過讀未提交,而隔離級別很高
讀未提交:寫加鎖,但是讀的話不加鎖,會導致讀到正在寫的數據;
快照:保證讀到一致性的同時,實現讀未提交
事務:將多種不同的命令,組裝到一起的過程
持久性:事務完成以后,該事務對數據庫所做的更改,便持久的保存在數據庫之中:
????????????1 提交請求到內存后返回
????????????2 將內存的數據打包到磁盤
隔離性(擴展:mvcc ,snapshot isolation)
持久性(擴展:持久性保證策略)
查看全部 -
事務:其本質是 鎖和并發查看全部
-
讀未提交查看全部
-
死鎖產生原因:兩個線程;分別擁有了對方想要獲得資源,并且兩個線程想要去拿對方鎖定的資源;
解決方法:盡可能不死鎖;碰撞檢測(主流);等鎖超時
查看全部 -
一個事務單元
查看全部 -
原子性
? ?要么全部成功 要么全部失敗
一致性?
? 序列化讀寫(使用鎖)
隔離性?
? ?讀寫鎖 :-可重復讀(repeatable ?read) 讀讀可以并行 讀寫不可以
? ? ? ? ? ? ? ? ? ? -讀已提交 (read committed) ?讀讀并行 讀寫并行 (寫讀不行)
? ? ? ? ? ? ? ? ? ? ? ? ? ? 會出現不可重復讀的問題,第一次讀和第二次讀的數據的版本號會不一致
? ? ? ? ? ? ? ? ? ? -讀未提交 (read uncommitted) 寫加鎖 讀不加鎖 , 讀讀 讀寫 寫讀并行 寫寫串行
? ? ? ? ? ? ? ? ? ? ? ? ? ? 會讀到寫中間數據
查看全部 -
4種隔離性查看全部
舉報