mysql的事務隔離級別:read uncommitted【讀未提交資料】read committed【讀已提交資料】repeatable read【可重讀】serializable【可序列化】
檢視mysql的事務隔離級別:預設、全域性和會話事務隔離級別:
select @@tx_isolation
select @@global.tx_isolation;
select @@session.tx_isolation;
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| repeatable-read |
+-----------------+
1 row in set (0.00 sec)
設定mysql的事物隔離級別:
語法:
set預設設定隔離級別為下乙個(未開始)事務設定隔離級別[session | global
]transaction
isolation
level
mysql> set transaction isolation level read committed;
query ok, 0 rows affected (0.05 sec)
或mysql> set tx_isolation='read-committed';
query ok, 0 rows affected (0.00 sec)
注:第一種無效。
需要dba的最高許可權,用global關鍵字設定隔離級別,在全域性對從那點開始建立的所有新連線設定預設事務級別,用session 關鍵字為將來在當前連線上執行的事務設定預設事務級別。任何客戶端都能自由改變會話隔離級別,也可在事務的中間),或者為下乙個事務設定隔離級別。
mysql> set session transaction isolation level serializable;
query ok, 0 rows affected (0.00 sec)
或mysql> set @@session.tx_isolation='serializable';
query ok, 0 rows affected (0.00 sec)
注:global類似。
鎖機制:
共享鎖:由讀表操作加上的鎖,加鎖後其他使用者只能獲取該錶或行的共享鎖,不能獲取排它鎖,也就是說只能讀不能寫。
排它鎖:由寫表操作加上的鎖,加鎖後其他使用者不能獲取該錶或行的任何鎖,典型是mysql事務中。
鎖的範圍:
行鎖: 對某行記錄加上鎖
表鎖: 對整個表加上鎖
組合起來就有:行級共享鎖,表級共享鎖,行級排他鎖,表級排他鎖。
四種隔離級別,開啟事務,預設對錶資料行加上行共享鎖,其他事務對該錶將只能進行讀操作,而不能進行寫操作,直到事務結束才會釋放。
但serializable事務隔離級別最嚴厲,在進行查詢時就會對錶的每個讀取行上加上共享鎖。
詳情學習推薦:
mysql資料庫事務隔離級別
mysql 鎖 事務隔離級別
最近在看mysql相關的書籍.實驗了一些內容.分享一下,主要是關於事務隔離級別 read committed和repeatable read 和鎖相關的.很多網上文章上都能搜尋到 read committed可以防止髒資料.但是不能防止 不可重複讀.而repeatable read可以防止 不可重複...
Mysql事務隔離級別和鎖機制
一.spring支援四種事務隔離級別 1.isolation read uncommitted 讀未提交 這是事務最低的隔離級別,它充許令外乙個事務可以看到這個事務未提交的資料。2.isolation read committed 讀已提交 保證乙個事務修改的資料提交後才能被另外乙個事務讀取。另外乙...
mysql鎖問題 事務隔離級別
相對其他資料庫而言,mysql的鎖機制比較簡單,其最顯著的特點是不同的儲存引擎支援不同的鎖機制。innodb最大的特點就是一是支援事務 transaction 二是採用了行級鎖。所以我們先來引申一下事務和事務隔離級別的知識。1.1 事務以及acid屬性 事務是由一組sql語句組成的邏輯處理單元,事務...