日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql事务处理问题

發(fā)布時間:2025/3/21 数据库 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql事务处理问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天和同學討論起數(shù)據(jù)庫事務處理的問題,感覺討論中明白了一些,有些知識看過了,但是沒有實際使用還是不理解。

事務處理就是將一系列操作當做一個原子操作,要么全部執(zhí)行成功,如果執(zhí)行失敗則保留執(zhí)行期的狀態(tài)。通過提交和回滾機制來實現(xiàn)操作,如果全部執(zhí)行成功通過提交執(zhí)行commit結果就會記錄到數(shù)據(jù)庫中,如果執(zhí)行失敗通過回滾操作rollback將發(fā)生錯誤之前的所有錯誤消除,回退到原來狀態(tài)。

事務都應該具備ACID特征。所謂ACID是Atomic(原子性),Consistent(一致性),Isolated(隔離性),Durable(持續(xù)性)四個詞的首字母所寫,下面以“銀行轉帳”為例來分別說明一下它們的含義:

原子性:組成事務處理的語句形成了一個邏輯單元,不能只執(zhí)行其中的一部分。換句話說,事務是不可分割的最小單元。比如:銀行轉帳過程中,必須同時從一個帳戶減去轉帳金額,并加到另一個帳戶中,只改變一個帳戶是不合理的。

一致性:在事務處理執(zhí)行前后,數(shù)據(jù)庫是一致的。也就是說,事務應該正確的轉換系統(tǒng)狀態(tài)。比如:銀行轉帳過程中,要么轉帳金額從一個帳戶轉入另一個帳戶,要么兩個帳戶都不變,沒有其他的情況。

隔離性:一個事務處理對另一個事務處理沒有影響。就是說任何事務都不可能看到一個處在不完整狀態(tài)下的事務。比如說,銀行轉帳過程中,在轉帳事務沒有提交之前,另一個轉帳事務只能處于等待狀態(tài)。

持續(xù)性:事務處理的效果能夠被永久保存下來。反過來說,事務應當能夠承受所有的失敗,包括服務器、進程、通信以及媒體失敗等等。比如:銀行轉帳過程中,轉帳后帳戶的狀態(tài)要能被保存下來。

注意Mysql支持的存儲引擎中,默認為MyISAM,是不支持事務處理的,一般都有InnoDB,是支持事務型的。

(1)如果對一個表進行操作的時候需要事務支持,需要配置存儲引擎為InnoDB等支持事務型的。

create table XX() engine=InnoDB;

(2)默認情況下,mysql是自動提交模式(autocommit=1),此時會在每一條語句執(zhí)行完畢后將所做修改立即提交,此時的commit相當于沒用的,rollback只對前一句語句起作用,其實也沒用,一條mysql語句默認也是原子操作,沒必要。

如果設置默認事務處理,需要將自動提交模式關閉即將autocommit設置為0.

set autocommit=0;???? 設置模式為關閉

select @@autocommit;? 查看值是否已經(jīng)改變

注意,如果在客戶端設置的話,設置完,之后斷掉連接后再重連又恢復默認設置。每個客戶端只能設置客戶自己的。

(3)如果自動提交模式是打開的,則需使用語句:

start transaction;?? 開始事務處理

XX1;

XX2;

commit;? /? rollback;

來開始事務處理;而如果設置為關閉,則無需使用start transaction,連續(xù)語句就為事務指導rollback或者commit。

(4)注意創(chuàng)建、改變、刪除數(shù)據(jù)庫或者其中的數(shù)據(jù)定義語言以及鎖有關的都不能成為事務的一部分,如下面:

start transaction; insert into test1 values("8"); create table test2(i int); insert into test1 values("8"); rollback;

執(zhí)行一個事務處理,當執(zhí)行到要創(chuàng)建表時,mysql會自動提交,然后再執(zhí)行創(chuàng)建語句。如果test1的i為主鍵,則第三條語句出錯,回滾時test1還是插入成功,且創(chuàng)建了表test2.

(5)python中使用數(shù)據(jù)庫,最好采用這種形式,

import MySQLdbtry:conn = MySQLdb.connect(host="localhost",user="root",passwd="your passwd",db="dbName") except MySQLdb.Error,e:print "Mysql Error %d: %s" % (e.args[0], e.args[1])else:pass #conn.close()

try:cur=conn.cursor()cur.execute('set autocommit=0') #cur.execute('start transaction')cur.execute('insert into test1 values("8")')cur.execute('insert into test1 values("8")') except MySQLdb.Error,e:conn.rollback() print "Mysql Error %d: %s" % (e.args[0], e.args[1])else:conn.commit()cur.close()conn.close()

(6)并行處理問題

Mysql是一個多用戶的系統(tǒng),有多用戶在同一時間訪問統(tǒng)一數(shù)據(jù)表,MySIAM采用的是數(shù)據(jù)表級的鎖定標記,來保證同一時間只有一個用戶訪問此表;Innodb采用了數(shù)據(jù)行級的訪問機制,即兩個用戶可以對同一個表中不同行的數(shù)據(jù)同時進行修改,而如果是同一行,則先來的用戶先鎖住此行,操作結束釋放鎖后,下一個用戶才能操作。

(7)事務處理的隔離性問題

InnoDB默認的隔離級別是repeatable read,如果某個用戶兩次執(zhí)行同一個select語句,其結果是可重復的,如果在事務期間有用戶對所要讀取的數(shù)據(jù)進行了操作,那么也不會有顯示,比如一個存儲引擎為innodb的表,如果有一個客戶用事務來select讀取表數(shù)據(jù),另一個用戶此時對表做了一個插入之類的操作,第一個用戶再進行同樣的select讀取時,顯示數(shù)據(jù)是沒有變化的。


(8)多語句操作非原子操作

如上面(6)中會出現(xiàn)一個問題,如果是一個事務操作,讀取數(shù)據(jù)后,想對數(shù)據(jù)進行操作,但是可能有另外一個人對此做了操作,那再對此數(shù)據(jù)進行操作就不對了。

此時需要明確加鎖來鎖住表,防止別人更改數(shù)據(jù),執(zhí)行結束后釋放鎖。

lock tables XX write;

XXXXXX;

unlock tables;

也可以使用相對更新代替絕對更新,相對于當前值進行更新,不根據(jù)上次的值算出一個絕對值進行更新。這樣避免了多條語句的非原子操作。

set a = a - 3 XXXXXXXXXXX;

 

總結

以上是生活随笔為你收集整理的Mysql事务处理问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩一卡 | 青草青视频 | 无码精品在线观看 | a级黄色小说| www.av88| 亚洲少妇15p | 黄色一级片在线免费观看 | 壮汉被书生c到合不拢腿 | 露脸丨91丨九色露脸 | 亚洲精选中文字幕 | 全部免费毛片在线播放 | 色图综合网| 成人av电影天堂 | 丰满放荡岳乱妇91ww | 影音先锋成人资源站 | 午夜av免费看 | 精品国产一区三区 | 黄色不卡 | 爱情岛论坛成人av | 一区二区在线观看免费视频 | 精品一区免费 | 中文一二三区 | 中文字幕在线免费观看 | 免费国产a| 日韩有码中文字幕在线 | 国产在线综合视频 | 久插视频 | 午夜天堂精品久久久久 | 91精品久久久久久久久中文字幕 | 丰满少妇大力进入 | 久久婷婷五月综合色国产香蕉 | 91久久久久国产一区二区 | 日本少妇bbwbbw精品 | 国产黑丝在线播放 | 国产精品久久中文字幕 | 亚洲黄色免费 | 天天干天天干天天操 | 国产日韩第一页 | 国产成人精品123区免费视频 | 免费福利av | 特大巨交吊性xxxx | 亚洲国产成人精品女人久久 | 18视频在线观看娇喘 | 欧美性生活一区二区 | 亚洲AV成人无码久久精品巨臀 | 国产一区二区小说 | 国产又粗又深又猛又爽又在线观看 | 久草国产在线视频 | 国产第一页第二页 | 日本一区视频在线播放 | www.色综合.com | 伊人天堂网 | 精品国产一区二区三区av性色 | 亚洲精品乱码久久久久久黑人 | 两个人看的www视频免费完整版 | 午夜福利啪啪片 | 中文字幕av一区二区三区谷原希美 | 边打电话边做 | 久久成人免费网站 | 韩国伦理片免费看 | 97精品人妻一区二区三区在线 | 老外黄色一级片 | 五月天综合久久 | 欧美性aaa| 免费成人黄色网址 | 天狂传说之巴啦啦小魔仙 | 欧美精品www | 免费黄av | 成人av手机在线观看 | 粗喘呻吟撞击猛烈疯狂 | 亚洲一区二区视频网站 | 人妖av在线 | 99热香蕉| 狠狠操网址 | 插入综合网 | 国产一区二区女内射 | 国产亚洲综合av | www.狠狠操.com | 夜夜看 | 国产麻豆乱码精品一区二区三区 | 久久小草 | 黑巨茎大战欧美白妞 | 一区=区三区乱码 | 片黄在线观看 | 亚洲成年人在线观看 | 国产精品腿扒开做爽爽爽挤奶网站 | 久久黄色精品视频 | 午夜免费高清视频 | 看av网址| 亚洲黄色小视频 | 欧美另类69xxxx | 涩涩网站在线看 | 99热这里只有精品在线观看 | 丰满少妇在线观看资源站 | 国产真实乱人偷精品人妻 | 欧美另类一区二区 | av网站大全在线观看 | 国产成人短视频在线观看 | 黄色a站|