色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql讀提交和可重復(fù)讀

張吉惟2年前9瀏覽0評論

MySQL 中 InnoDB 存儲引擎提供了事務(wù)隔離級別,其中包括四種:讀未提交,讀提交,可重復(fù)讀和串行化。

今天我們討論的是其中兩種隔離級別:讀提交和可重復(fù)讀。

讀提交(Read Committed)

讀提交是 InnoDB 的默認事務(wù)隔離級別,并且是大部分應(yīng)用所使用的級別。讀提交的意思是一個事務(wù)只能看到已經(jīng)提交的事務(wù)所做的修改。如果一個事務(wù)正在進行中,而且對某個數(shù)據(jù)行進行了修改,那么在該事務(wù)提交之前,其他事務(wù)是看不到這個修改的。

按照正常的操作流程,讀提交的行為規(guī)則如下:

-- 啟用讀提交事務(wù)隔離級別
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- 創(chuàng)建一個示例表
CREATE TABLE test_table (
id INT PRIMARY KEY,
name VARCHAR(16)
);
-- 在一個事務(wù)中插入數(shù)據(jù)并提交
START TRANSACTION;
INSERT INTO test_table (id, name) VALUES (1, 'Hello');
COMMIT;
-- 在另一個事務(wù)中查詢數(shù)據(jù),此時只能查詢到已經(jīng)提交的數(shù)據(jù)
START TRANSACTION;
SELECT id, name FROM test_table WHERE id = 1;
COMMIT;

可重復(fù)讀(Repeatable Read)

可重復(fù)讀是比較常用的事務(wù)隔離級別之一,在 MySQL 中也被稱為默認的事務(wù)隔離級別。與讀提交不同,可重復(fù)讀允許一個事務(wù)內(nèi)多次讀取同一數(shù)據(jù)行時,保持這些數(shù)據(jù)的一致性,即在一個事務(wù)中第一次讀取某個數(shù)據(jù)行時,該數(shù)據(jù)行所做的任何修改對后續(xù)讀取都是不可見的。

按照正常的操作流程,可重復(fù)讀的行為規(guī)則如下:

-- 啟用可重復(fù)讀事務(wù)隔離級別
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- 在一個事務(wù)中查詢數(shù)據(jù)并提交
START TRANSACTION;
SELECT id, name FROM test_table WHERE id = 1;
COMMIT;
-- 在另一個事務(wù)中修改數(shù)據(jù)時,之前查詢的數(shù)據(jù)行不受影響
START TRANSACTION;
UPDATE test_table SET name = 'World' WHERE id = 1;
COMMIT;
-- 再次查詢數(shù)據(jù)時,仍能查詢到與之前一致的數(shù)據(jù)
START TRANSACTION;
SELECT id, name FROM test_table WHERE id = 1;
COMMIT;

總的來說,在實際應(yīng)用中根據(jù)業(yè)務(wù)需求選擇合適的事務(wù)隔離級別是很重要的,不當(dāng)?shù)倪x擇可能導(dǎo)致數(shù)據(jù)不一致或者性能下降。