Mac系統(tǒng)mysql設置事務隔離級別
事務隔離級別指的是在處理同一個數(shù)據(jù)的多個事務中,一個事務修改數(shù)據(jù)后,其他事務何時能看到修改后的結果。
MySQL數(shù)據(jù)庫事務隔離級別主要有四種:
- Serializable 串行化,一個事務一個事務的執(zhí)行
- Repeatable read 可重復讀,無論其他事務是否修改并提交了數(shù)據(jù),在這個事務中看到的數(shù)據(jù)值始終不受其他事務影響
- Read committed 讀取已提交,其他事務提交了對數(shù)據(jù)的修改后,本事務就能讀取到修改后的數(shù)據(jù)值
- Read uncommitted 讀取未提交,其他事務只要修改了數(shù)據(jù),即使未提交,本事務也能看到修改后的數(shù)據(jù)值。
? ? ? ?MySQL數(shù)據(jù)庫默認使用可重復讀( Repeatable read),而使用樂觀鎖的時候,如果一個事務修改了庫存并提交了事務,那其他的事務應該可以讀取到修改后的數(shù)據(jù)值,所以不能使用可重復讀的隔離級別,應該修改為讀取已提交Read committed。
? ? ? ?由于在Mac系統(tǒng)中安裝完mysql是沒有配置文件的,所以我們需要在終端中進入mysql修改。在終端中進入mysql后輸入如下命令,查看自己mysql的事務隔離級別
# global.transaction_isolation 是全局的事務隔離級別,transaction_isolation是當前會話的事務隔離級別
select @@global.transaction_isolation, @@transaction_isolation;
# 提示,這里的transaction_isolation可能和你電腦中的變量名字不同,可以先使用命令查看一下
show variables like '%isolation%';

查看自己mysql配置中的變量名

mysql事務隔離級別
? ? ? ?之后我們需要將其修改為read committed
# 修改全局事務隔離級別
set global transaction isolation level read committed;
# 修改當前會話的事務隔離級別
set session transaction isolation level read committed;
我們選擇修改全局事務隔離級別

修改mysql全局事務隔離級別
修改完之后,退出mysql,之后再重新進入到mysql,就可以查看到事務隔離級別已經(jīng)修改好了。

修改完的mysql事務隔離級別
【友情提示:這樣修改完之后,如果重啟了電腦之后,mysql的配置是會還原的,所以重啟電腦之后需要重新設置一下?。。。。。 ?/p>