mysql優化參考 六 隔離性(鎖)

2022-06-22 18:30:15 字數 1232 閱讀 1333

一、隔離級別參考:

二、鎖特性:

常見集中問題

髒讀重複讀

同樣開啟兩個客戶端,並且關閉自動提交

還是上面的t1表

客戶端1

insert

into t1 values (1);

客戶端2:select * from t1,記錄為空,說明解決了髒讀的問題

客戶端1 提交

commit;

客戶端2:

mysql>

select

*from

t1;+

----+

| id |+--

--+|1|

+----+

客戶端1,刪除表記錄

客戶端2,再次查詢(未提交情況下),查詢記錄為空

出現在同乙個事務中,同樣的sql語句出現不同的查詢結果(不可重複讀問題);這個例子其實最好用update來體現,就是有點懶

幻讀同樣開啟兩個客戶端,並且關閉自動提交

還是上面的t1表

客戶端1 

insert

into t1 values (1);

客戶端2

mysql>

select

*from t1 where id >0;

+----+| id |+--

--+|1|

+----+1 row in

set (0.00 sec)

客戶端1

mysql>

insert

into t1 values (2

);query ok,

1 row affected (0.00

sec)

mysql

>

commit

;query ok,

0 rows affected (0.00 sec)

客戶端2(注意這裡是沒提交的情況下,查出來的記錄有兩條;這個其實和不可重複讀一樣的,只是幻讀是insert型別的)

mysql>

select

*from t1 where id >0;

+----+| id |+--

--+|1|

|2|+

----+

2 rows in

set (0.00 sec)

mysql的隔離性和鎖

innodb的事務支援4種隔離機制,分別是 read uncommitted,read committed,repeatable read,and serializable.其中預設的為repeatable read.下面詳細分析這4種隔離性的聯絡和區別。在不用鎖的查詢語句中,此隔離級別保證了每次事...

Mysql 鎖 隔離級別

1.共享鎖 只要有乙個人 事務或執行緒 在查詢,其他人就都不能改,要照顧少數 下面是將所有性別是男的資料都加上共享鎖 select from table where 男 lock in share mode2.排他鎖 只要有乙個人 事務或執行緒 在用 增刪改差 其他人就不能用 下面是將所有性別是男的...

mysql 鎖,隔離級別

1.鎖是對多執行緒,多程序訪問同一資源進行協調的機制 2.分為行鎖,表鎖,頁鎖。myisam和memory支援表鎖,bdb引擎支援表鎖,頁鎖。innodb支援表鎖,行鎖 預設 3.myisam表鎖 4.myisam併發插入 5.讀寫操作同時爭搶鎖,寫鎖優先,可以設定寫鎖優先順序降低,low prio...