測試的覆蓋通常是指需求範圍的執行程度,如需求、測試用例、缺陷的正向與逆向的雙向追溯。便於對其相關屬性的度量,即使用了覆蓋率。 ...
元數據鎖 SHARE_READ/EXCLUSIVE:
- 共用鎖:在DQL/DML的時候給表加 SHARE_READ/WRITE 鎖,與排它鎖互斥
- 作用:在A事務未提交的情況下,B事務不能修改表結構
- 排他鎖:在DDL的時候給表加EXCLUSIVE鎖,與共用/排他鎖都互斥。
- 作用:修改表結構的時候不允許執行DQL/DML
意向鎖 IS/IX:
-
意向共用鎖 IS:執行select ... lock in share mode 時,會加行共用鎖,以及對錶加 IS
-
意向寫鎖 IX:執行DML語句時,會加行寫鎖,同時對錶加 IX
-
作用:可以更快的知道能否加表鎖,否則的話要一行一行的掃描來判斷是否能夠加表鎖
對於同一張表,表鎖和行鎖不能共存
一個 sql 的加鎖情況
A事務執行DML,尚未提交
begin;
update tb_user set name = 'ccc' where id = 1;
where條件 滿足索引,那麼就會加給該行記錄加行排他鎖 X、給該表意向寫鎖 IX 和 元數據共用鎖 SHARE_READ
在A事務未提交前,由於上述鎖的存在,那麼其他事務不能做如下操作:
-
X:其他事務不能加 S/X,也就是其他的事務不能執行對該行數據執行DML,以及DQL(lock...)
- 作用:事務A未執行完畢時,防止其他事務又修改行數據
-
IX:其他事務不能加 表讀/寫鎖
-
SHARE_READ:其他事務不不能執行 DDL
行鎖
加行鎖的情況:
- 等值查詢 (唯一索引),查詢條件是表中不存在的記錄。S(臨鍵鎖) -> 退化成 Gap,對查詢條件後面那個數據加間隙鎖 Gap
像這種情況,由於id=13這個數據不存在,會鎖定12,14的這段間隙
-
等值查詢 (非唯一索引),查詢條件是表中存在的記錄,向索引後面找,直到找到不為查詢條件的那個索引,對它加 Gap。
對查詢條件加 S,臨鍵鎖
-
範圍查詢