摘 要:計算機網(wǎng)絡(luò)的發(fā)展開擴了PHP和MySQL的應(yīng)用范圍,數(shù)據(jù)庫技術(shù)全世界都在密切關(guān)注,這種技術(shù)領(lǐng)域?qū)⒎植加谖覀兩钪械母鱾€方面。對于一些中小型企業(yè)來講,PHP和MySQL的管理系統(tǒng)軟件非常適用,性能高、成本低、運行快和操作簡單等優(yōu)勢大大滿足了人們對數(shù)據(jù)庫的需要。本文針對PHP和MySQL的概念分析,對分布式數(shù)據(jù)管理進行討論,通過舉例說明分布式事務(wù)處理的存在問題與存在優(yōu)勢。
關(guān)鍵詞:MySQL;PHP;分布式事務(wù)處理
中圖分類號:TP311.13
PHP和MySQL是一種比較出色的開放源碼軟件,這種組合形式已經(jīng)成為很多人的建站模式。計算機網(wǎng)絡(luò)的發(fā)展需要一個十分強大的數(shù)據(jù)庫做后臺,這些系統(tǒng)與系統(tǒng)、數(shù)據(jù)與數(shù)據(jù)之間的分布式事務(wù)處理利用PHP和MySQL的功能可以做到分段式處理方式,保證了整體數(shù)據(jù)的完整性,一旦出現(xiàn)問題,通過引入XA概念將PHP和MySQL的程序簡化,整體事務(wù)由XA來完成,應(yīng)用程序只負(fù)責(zé)數(shù)據(jù)為的處理,從而大大優(yōu)化了了應(yīng)用程序的操作方式與成功率。
1 MySQL概念
MySQL是一個管理系統(tǒng)軟件,是一種開放源碼軟件,它的利用程度非常自由。由于軟件本身的特點非常明顯,快速、成本低且體積小,所以在中小型企業(yè)中非常流行。它的功能應(yīng)用廣泛,通過測試證明它非常準(zhǔn)確、穩(wěn)定,完全可以適用于多CPU102 2001.18計算機。MySQL軟件是一種核心級多線程資源,可以在不同區(qū)域不同平臺上進行操作,豐富了set、blob、timestamp等數(shù)據(jù)類型,可支持多數(shù)據(jù)庫統(tǒng)一查詢,為WINDOWS提供ODBC的接口。MySQL的特點不止如此,還有很多技術(shù)優(yōu)點,所以操作者非常喜歡使用該程序軟件[1]。
2 PHP的概念
PHP是一個英文縮寫名稱,即:Hypertext Preprocessor,英文超級本預(yù)處理語言的縮寫形式,它和ASP都是一種腳本語言,在服務(wù)器端嵌入HTML文檔,和C語言相似,同樣受到廣大編程人員的喜愛。PHP的語言形式與多種語言混合,其加雜了C語言、Java、Perl和PHP自帶語法,由于PHP是在HTML文檔中嵌入程序然后進行執(zhí)行,所以其效率程度相比CGI更加快速。
PHP功能十分強大并且是免費的開源代碼,它本身技術(shù)含量低、實用性廣、運行快并且還可以跨多種系統(tǒng)中運行,例如:UNIX、WINDOWS、Mac IOS系統(tǒng)[2]。
3 多個數(shù)據(jù)庫的分布式事務(wù)處理模式
MySQL中有兩種對事務(wù)處理的方法,第一種是利用關(guān)鍵字來改變MySQL的自動提交模式,這種方法是由set autocommit=0進行對MySQL的自動提交模式改變,然后將SQL的事務(wù)處理完成后提交確認(rèn)并結(jié)束任務(wù)。第二種是利用關(guān)鍵字來開始一個事務(wù),確認(rèn)后再結(jié)束事務(wù),也就是是由Begin開始一個事務(wù),直接提交確認(rèn)完成結(jié)束任務(wù)。
例:一臺ATM自動存取款機,小王想用自己在中國銀行的賬戶轉(zhuǎn)賬到交通銀行的賬戶中,這種操作是是利用數(shù)據(jù)庫與數(shù)據(jù)庫中相連接的多個數(shù)據(jù)庫分布式事務(wù)處理。數(shù)據(jù)庫中包括賬戶卡號、余額信息、交易日期、交易類型等信息,是由賬戶表和日志表進行分別存儲。
這種常見分布式事務(wù)處理方法如不發(fā)生意外,能夠一直保持各數(shù)據(jù)庫間的統(tǒng)一性,實現(xiàn)分布式事務(wù)處理??梢坏┏霈F(xiàn)意外,如當(dāng)用戶信息傳入到數(shù)據(jù)庫服務(wù)器中,數(shù)據(jù)服務(wù)器突然死機,服務(wù)器還沒進行提交,數(shù)據(jù)庫與數(shù)據(jù)庫間將失去聯(lián)系,無法保證數(shù)據(jù)的統(tǒng)一性和準(zhǔn)確性。或當(dāng)所有事務(wù)處理完成后但數(shù)據(jù)服務(wù)器將操作成功返回給客戶時,網(wǎng)絡(luò)連接突然中斷,這同樣不能使數(shù)據(jù)統(tǒng)一,這種情況雖然是服務(wù)器操作完成,但是客戶認(rèn)為事務(wù)操作失敗,但若要檢測出哪項事務(wù)使任務(wù)沒有完成,這個過程比較復(fù)雜。因此,需要引入兩階段提交協(xié)議進行操作,通過PHP和MySQL的分布式事務(wù)處理[3]。
4 PHP和MySQL的分布式事務(wù)處理的優(yōu)勢
在PHP和MySQL接口連接執(zhí)行分布式事務(wù)時,引入XA概念,PHP和MySQL執(zhí)行此任務(wù),是將每個服務(wù)器上涉及的事務(wù)全部提交并返回。根據(jù)分段提交方法,在整體事務(wù)被執(zhí)行后。第一階段,分支事務(wù)準(zhǔn)備提交時,管理分支的服務(wù)器將自動記錄分支事務(wù)操作,第二階段事務(wù)處理器在準(zhǔn)備提交或返回第一階段的結(jié)果時,所有分支同時進行操作,若其中一項分支操作失敗,則所有分支操作都被返回。
上文中案例顯示,在轉(zhuǎn)賬過程中經(jīng)歷多個程序,任何程序環(huán)節(jié)出現(xiàn)錯誤則整個交易過程就會失敗,在操作過程中,系統(tǒng)將會對操作做出異常情況檢測,不管操作成功與否,都需要在第一階段完成且第二階段準(zhǔn)備就緒后才執(zhí)行第二階段,否則數(shù)據(jù)無法提交[4]。
在實際操作中不可預(yù)見任何錯誤產(chǎn)生將無法挽回,損失嚴(yán)重。所以在處理事務(wù)過程中,程序內(nèi)部需要通知事務(wù)提交和返回等事務(wù),如果數(shù)據(jù)庫發(fā)生異常,應(yīng)用程序會檢測出數(shù)據(jù)庫的運作進程,并立即使用特殊的編程邏輯彌補此類錯誤。
上文說到,引入XA概念,PHP和MySQL執(zhí)行此任務(wù),是將每個服務(wù)器上涉及的事務(wù)全部提交并返回。引入XA概念的優(yōu)勢是將PHP和MySQL的應(yīng)用程序簡化,事務(wù)處理的完整性通過數(shù)據(jù)庫和事務(wù)管理器對XA的接口來控制,應(yīng)用程序無需關(guān)心事務(wù)的完整性,能更好的對數(shù)據(jù)庫進行處理。分布式事務(wù)處理復(fù)雜多樣,利用與XA的接口處理,全局事務(wù)將由事務(wù)管理器負(fù)責(zé),應(yīng)用程序只負(fù)責(zé)提交或返回的操作,這樣能夠很好的控制多個異地數(shù)據(jù)庫的完整事務(wù)處理。
引入XA概念的PHP和MySQL分布式事務(wù)處理代碼如下:
//初始化賬戶A和B的數(shù)據(jù)庫連接
$conn24=new MySQLi(“172.16.0.248”,“root”,“”,“test”);
$conn18=new MySQLi(“172.16.0.243”,“root”,“password”,“test”);
//隨機生成數(shù)字表示存取錢
$account=rand(1,1000);
//生成唯一XA的ID編碼
$xid=date(“Ymd”).time();
//lpc開始
$conn24 - >query(“XA START $xid”);
$conn18->query(“XA START $xid”);
5 結(jié)束語
綜上所述,計算機發(fā)展的后備力量是數(shù)據(jù)庫的完整性,數(shù)據(jù)庫建立需要PHP和MySQL,在此基礎(chǔ)上增添了分布式應(yīng)用的操作方法,從而實現(xiàn)了分布式事務(wù)處理系統(tǒng)。利用PHP和MySQL建立的完整數(shù)據(jù)庫進行數(shù)據(jù)的提交與返回操作,避免了應(yīng)用程序復(fù)雜導(dǎo)致的出現(xiàn)異常情況,分布式事務(wù)處理一定程度的優(yōu)化了系統(tǒng)的運行效率,再引入XA的概念,全局事務(wù)將由事務(wù)管理器負(fù)責(zé),應(yīng)用程序只負(fù)責(zé)提交或返回的操作,完全不必考慮其它事務(wù)處理。
參考文獻:
[1]朱國民,賈民平.基于MySQL和VC++的遠(yuǎn)程狀態(tài)監(jiān)測與故障診斷數(shù)據(jù)庫的研發(fā)[J].機械制造與自動化,2006(05):127-129-132.
[2]夏玉,宋斌恒.Web Service下的分布式事務(wù)處理研究與實現(xiàn)——基于Tomcat、Axis和JOTM[J].計算機應(yīng)用與軟件,2007(05):84-86.
[3]宣振國.基于Mysql的數(shù)據(jù)庫集群設(shè)計與實現(xiàn)[D].北京郵電大學(xué),2013.
[4]查小科.分布式并行數(shù)據(jù)庫系統(tǒng)DPSQL中分布式查詢和分布式事務(wù)的設(shè)計與實現(xiàn)[D].電子科技大學(xué),2003.
作者簡介:周潔(1979.05-),男,浙江余姚人,教師,講師,研究方向:PHP語言相關(guān)。
作者單位:余姚市技工學(xué)校,浙江余姚 315400