明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

MySQL中對于事務(wù)的具體詳細(xì)說明

[摘要]MySQL事務(wù):1.MySQL事務(wù)控制語句(1).開啟事務(wù)begin;(2).提交事務(wù)commit;(3).回滾事務(wù)rollback;(4).設(shè)置事務(wù)是否自動提交set autocommit = {...

MySQL事務(wù):

1.MySQL事務(wù)控制語句

(1).開啟事務(wù)

begin;

(2).提交事務(wù)

commit;

(3).回滾事務(wù)

rollback;

(4).設(shè)置事務(wù)是否自動提交

set autocommit = {0   1}; // 0不自動提交,1自動提交

例如:

begin;// 開啟事務(wù)
insert into table_name values(內(nèi)容);
commit;// 提交事務(wù)

這個就是一個簡單的插入數(shù)據(jù)的事務(wù)

begin;// 開啟事務(wù)
insert into table_name values(內(nèi)容);// 后悔了,不想插入數(shù)據(jù)了
rollback;// 回滾,取消這次的事務(wù)操作

這個就是一個簡單的插入數(shù)據(jù)的回滾事務(wù)

2.MySQL事務(wù)隔離語句

查看MySQL的隔離級別

show variables like 'tx_isolation';

(1).read-uncommitted(讀取未提交內(nèi)容)

臟讀(帶來的問題);

一個用戶在兩次查詢結(jié)果中的內(nèi)容不相同.

設(shè)置默認(rèn)隔離級別(設(shè)置完成后需要重新登錄):

set global transaction isolation level read uncommitted;

兩個用戶同時登錄數(shù)據(jù)庫,分別開啟事務(wù),一個用戶的事務(wù)執(zhí)行增刪改操作,另一個用戶的事務(wù)只進(jìn)行查詢操作,前者執(zhí)行完操作,不進(jìn)行提交,后者就可以看到操作結(jié)果,但如果這時候前者進(jìn)行了事務(wù)的回滾,后者這時候查詢就會看到不一樣與上次不一樣的結(jié)果(也就是沒有進(jìn)行操作的結(jié)果),這就是臟讀問題.

(2).read committed(讀取提交內(nèi)容)

事務(wù)只能看見已經(jīng)提交事務(wù)所做的改變,同一查詢可能返回不同的結(jié)果,此級別導(dǎo)致的不可重復(fù)讀問題.

設(shè)置默認(rèn)隔離級別(設(shè)置完成后需要重新登錄):

set global transaction isolation level read committed;

在一次事務(wù)中,看到了兩次不一樣的查詢結(jié)果(與臟讀類似).

(3).repeatable read(可重復(fù)讀)

能確保同一事務(wù)的多個實例在并發(fā)讀取數(shù)據(jù)時,會看到同樣的數(shù)據(jù)行(數(shù)據(jù)庫的莫爾納隔離級別).

設(shè)置默認(rèn)隔離級別(設(shè)置完成后需要重新登錄):

set global transaction isolation level repeatable read;

也就在在一次事務(wù)中,無論另一個用戶如何修改數(shù)據(jù),在這次事務(wù)中查詢到的結(jié)果總是相同.

***隱式事務(wù)提交***:

alter table users engine = innodb;// 會造成事務(wù)的隱式提交

3.InnoDB鎖機制

(1).一個表中沒有任何的主鍵和索引,一個事務(wù)會鎖住這個表的所有記錄,其他的事務(wù)無法進(jìn)行操作這個表.

(2).一個表中存在主鍵或者索引,一個事務(wù)會鎖住表的他操作的某行數(shù)據(jù),不回鎖住整個表,如果其他的事務(wù)操作這個表的其他數(shù)據(jù),這個時候是不受影響的.需要注意的是這的行級鎖是間隙鎖,也就是說如果你修改的某幾行數(shù)據(jù),比如過修改id<10的n行數(shù)據(jù).=,這時,id = 11的數(shù)據(jù)也會被鎖住,這是需要注意的.

以上就是MySQL中關(guān)于事務(wù)的具體詳解的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。