python 各種鎖機制歸納整理

2022-05-03 19:48:14 字數 1721 閱讀 1098

q:為什麼要用鎖?什麼樣的業務場景下需要用鎖?

就拿之前的工單系統來說,當審批方式為角色組審批時,代表該角色組內任意一人審批即可,這時,該角色組內成員的系統上都是可以顯示審批按鈕,如果此時a審批員和b審批員都同時審批了同一工單,有可能會出現不一樣的審批結果,即使審批意見是一致的,多人操作也會增加對資料庫的操作次數,同時也消耗了很大時間成本,用了鎖機制,確保這部分是只一人在操作。

q:你知道mysql有哪些鎖?

悲觀鎖、樂觀鎖            排它鎖、共享鎖                 行級鎖、表級鎖

悲觀鎖:對每次訪問資料庫的操作都是抱有悲觀的態度,認為該操作會對資料庫做出修改,所以在訪問資料庫的時候就加了鎖

樂觀鎖:對每次訪問資料庫的操作都抱有樂觀的態度,只有在做出修改的時候才會上鎖

排它鎖:也稱為寫鎖,若事務a對資料a上了寫鎖,那麼此時只允許事務a對資料a進行讀和寫的操作,不允許資料a再接受其他的鎖,直到排它鎖釋放之後

共享鎖:也稱為讀鎖,若事務a對資料a上了讀鎖,那麼此時事務a只能讀取資料a並不能對其修改,也能接受其他事務對資料a的讀鎖

mysql資料庫引擎:myisam 和 innodb

myisam 採用表級鎖,不支援事務

innodb 預設行級鎖,也支援表級鎖

行級鎖:如根據主鍵id欄位進行查詢,並且查詢到資料,主鍵欄位就產生了行級鎖

表級鎖:根據非主鍵非索引字段進行查詢,並且查詢到資料,當前查詢字段產生表級鎖

gil全域性直譯器鎖:gil相當於互斥鎖,在直譯器層面上限制多執行緒同時執行,避免爭搶資源,保證同一時間只有乙個執行緒在執行

q:有了gil全域性直譯器鎖,為什麼還要執行緒鎖?

因為cpu是分時分片的  當該協程指定時間內未完成任務時 需要用到執行緒鎖 

q:為什麼要用鎖?什麼樣的業務場景下需要用鎖?

就拿之前的工單系統來說,當審批方式為角色組審批時,代表該角色組內任意一人審批即可,這時,該角色組內成員的系統上都是可以顯示審批按鈕,如果此時a審批員和b審批員都同時審批了同一工單,有可能會出現不一樣的審批結果,即使審批意見是一致的,多人操作也會增加對資料庫的操作次數,同時也消耗了很大時間成本,用了鎖機制,確保這部分是只一人在操作。

q:你知道mysql有哪些鎖?

悲觀鎖、樂觀鎖            排它鎖、共享鎖                 行級鎖、表級鎖

悲觀鎖:對每次訪問資料庫的操作都是抱有悲觀的態度,認為該操作會對資料庫做出修改,所以在訪問資料庫的時候就加了鎖

樂觀鎖:對每次訪問資料庫的操作都抱有樂觀的態度,只有在做出修改的時候才會上鎖

排它鎖:也稱為寫鎖,若事務a對資料a上了寫鎖,那麼此時只允許事務a對資料a進行讀和寫的操作,不允許資料a再接受其他的鎖,直到排它鎖釋放之後

共享鎖:也稱為讀鎖,若事務a對資料a上了讀鎖,那麼此時事務a只能讀取資料a並不能對其修改,也能接受其他事務對資料a的讀鎖

mysql資料庫引擎:myisam 和 innodb

myisam 採用表級鎖,不支援事務

innodb 預設行級鎖,也支援表級鎖

行級鎖:如根據主鍵id欄位進行查詢,並且查詢到資料,主鍵欄位就產生了行級鎖

表級鎖:根據非主鍵非索引字段進行查詢,並且查詢到資料,當前查詢字段產生表級鎖

gil全域性直譯器鎖:gil相當於互斥鎖,在直譯器層面上限制多執行緒同時執行,避免爭搶資源,保證同一時間只有乙個執行緒在執行

q:有了gil全域性直譯器鎖,為什麼還要執行緒鎖?

因為cpu是分時分片的  當該協程指定時間內未完成任務時 需要用到執行緒鎖 

python鎖機制 python 鎖機制

當有兩個或跟多個執行緒或程序需要操作乙個變數或程序時,會出現意想不到的結果,這是因為執行緒或程序時迸發進行的,對同意變數或檔案操作時,會出現同時對其操作,從到導致邏輯錯誤。bin usr env python coding utf 8 import multiprocessing import ti...

Oracle的鎖機制歸納總結

鎖是防止在兩個事務操作同乙個資料來源 表或行 時互動破壞資料的一種機制。oracle採用封鎖技術保證併發操作的可序列性。oracle的鎖分為兩大 類 資料鎖 也稱dml鎖 和字典鎖。字典鎖是oracle dbms內部用於對字典表的封鎖。字典鎖包括語法分析鎖和ddl鎖,由dbms在必要的時候自動加鎖和...

Oracle的鎖機制歸納總結

鎖是防止在兩個事務操作同乙個資料來源 表或行 時互動破壞資料的一種機制。oracle採用封鎖技術保證併發操作的可序列性。oracle的鎖分為兩大類 資料鎖 也稱dml鎖 和字典鎖。字典鎖是oracle dbms內部用於對字典表的封鎖。字典鎖包括語法分析鎖和ddl鎖,由dbms在必要的時候自動加鎖和釋...