午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL 如何使用事務(wù)

瀏覽:235日期:2023-10-11 18:47:08

基礎(chǔ)知識

事務(wù)是指對一組 SQL 語句進行一個原子化的操作,即如果這一組 SQL 語句中有一條發(fā)生錯誤,那么其他的同組 SQL 就都不會被執(zhí)行。

你可以把它當作一個測試,當你執(zhí)行完一組 SQL 語句后,可以查看一下結(jié)果是否正確,如果正確后可以選擇提交,如果不正確則可以進行回滾,恢復(fù)到原本的狀態(tài)。

在 MySQL 中,所有的操作默認都是自動進行提交,當開啟事務(wù)后則變?yōu)槭謩犹峤弧?/p>

基本使用

單獨開啟

單獨開啟是指對某一組的 SQL 語句開啟事務(wù)。

CREATE TABLE user( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name CHAR(12) NOT NULL, balance INT UNSIGNED ); -- 創(chuàng)建用戶表INSERT INTO user(name,balance) VALUES ('Yunya',1000), ('Ken',500); -- 插入數(shù)據(jù)start transaction; -- 開啟事務(wù),增刪改操作均要手動提交 UPDATE user SET balance = 500 WHERE name = 'Yunya'; -- Yunya對Ken轉(zhuǎn)賬500 UPDATE user SET balance = 1000 WHERE name = 'Ken'; SELECT * FROM user; -- 驗證是否出錯 COMMIT; -- 提交事務(wù):手動提交上面兩條UPDATE -- ROLLBACK; -- 事務(wù)回滾:轉(zhuǎn)賬金額不對時使用回滾BEGIN -- 關(guān)閉事務(wù),增刪改操作均自動提交

全局開啟

如果所有 SQL 都使用事務(wù)操作,我們可以通過 SET AUTOCOMMIT=0 關(guān)閉自動提交來開啟事務(wù)機制,這樣所有語句都是事務(wù)類型。

-- 關(guān)閉自動提交SET AUTOCOMMIT = 0;INSERT INTO user(name,balance) VALUES(’Jack’,8000);COMMIT;-- 開啟自動提交SET AUTOCOMMIT = 1;

事務(wù)隔離

并發(fā)問題

當高并發(fā)訪問會遇到多個事務(wù)的隔離問題,可能會出現(xiàn)以下:

臟讀:事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù),然后B回滾操作,那么A讀取到的數(shù)據(jù)是臟數(shù)據(jù)不可重復(fù)讀:事務(wù)A多次讀取同一數(shù)據(jù),事務(wù)B在事務(wù)A多次讀取的過程中,對數(shù)據(jù)作了更新并提交,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時,結(jié)果不一致。幻讀:系統(tǒng)管理員A將數(shù)據(jù)庫中所有學(xué)生的成績從具體分數(shù)改為ABCDE等級,但是系統(tǒng)管理員B就在這個時候插入了一條具體分數(shù)的記錄,當系統(tǒng)管理員A改結(jié)束后發(fā)現(xiàn)還有一條記錄沒有改過來,就好像發(fā)生了幻覺一樣,這就叫幻讀。不可重復(fù)讀的和幻讀很容易混淆,不可重復(fù)讀側(cè)重于修改,幻讀側(cè)重于新增或刪除。解決不可重復(fù)讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表

隔離級別

系統(tǒng)默認隔離級別為3級,可能出現(xiàn)幻讀的情況。

隔離級別 中文釋義 臟讀 不可重復(fù)讀 幻讀 說明 read uncommitted 讀未提交 是 是 是 最低的事務(wù)隔離級別,一個事務(wù)還沒提交時,它做的變更就能被別的事務(wù)看到 read committed 不可重復(fù)讀 否 是 是 保證一個事物提交后才能被另外一個事務(wù)讀取。另外一個事務(wù)不能讀取該事物未提交的數(shù)據(jù) repeatable read 可重復(fù)讀 否 否 是 多次讀取同一范圍的數(shù)據(jù)會返回第一次查詢的快照,即使其他事務(wù)對該數(shù)據(jù)做了更新修改。事務(wù)在執(zhí)行期間看到的數(shù)據(jù)前后必須是一致的 serializable 串行化 否 否 否 事務(wù) 100% 隔離,可避免臟讀、不可重復(fù)讀、幻讀的發(fā)生。花費最高代價但最可靠的事務(wù)隔離級別

查詢設(shè)置

查詢隔離級別

select @@tx_isolation;

設(shè)置隔離級別

set session transaction isolation level read uncommitted; -- set session只對當前會話有效,set global則對全局有效

以上就是MySQL 如何使用事務(wù)的詳細內(nèi)容,更多關(guān)于MySQL 事務(wù)的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

相關(guān)文章:
主站蜘蛛池模板: 日本欧美一区二区三区 | 成人亚洲网 | 综合九九 | 久草网站在线观看 | 欧美日韩精品免费观看 | 亚洲69视频 | 日韩中文字幕网 | 日韩美女免费视频 | 国产原创中文av | 欧美人与牛zoz0性行为 | 欧美激情精品久久久久久蜜臀 | 亚洲免费高清 | 91亚洲精品国偷拍 | 欧美国产精品一区二区三区 | 一区二区精品国产 | 欧美日韩精品区 | 久久理伦 | 日日摸日日添日日躁av | 成人18视频免费69 | 欧美日韩三级视频 | av免费观看网站 | 国产高清视频 | 金8天国av | 国产原创视频在线观看 | 亚洲婷婷免费 | 欧美黄色小视频 | 黑人啪啪| 91麻豆成人精品国产 | 久久国产精品网站 | 天堂自拍 | 精品毛片在线观看 | 欧美成人毛片 | 免费国产一区二区三区 | 四虎网站在线观看 | 久久观看最新视频 | 亚洲免费片| 长河落日电视连续剧免费观看01 | 国产黄网在线观看 | 97在线视频免费 | 国产高清黄网站全免费 | av在线天天 |