999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

PHP 與MySQL 平臺下的事務實現探討

2012-09-12 01:01:08朱海巖趙新平
重慶高教研究 2012年5期
關鍵詞:引擎指令數據庫

朱海巖,趙新平

(呂梁學院汾陽師范分校信息技術系,山西 汾陽 032200)

事務是一個或一系列查詢,這些查詢可以保證在數據庫中作為一個整體全部執行或者全部不執行[1].一個事務所涉及的操作如果全部被執行則稱為該事務被提交了,否則,數據庫的狀態會回到事務執行之前的狀態,稱為事務被回滾了.這樣,數據庫就可以在事務執行成功或者不成功的情況下都保持一致狀態.

1 關于MyISAM和InnoDB

MySQL數據庫支持許多不同的存儲引擎,這些存儲引擎決定了表的內部實現.數據庫中的每個表可以采用不同的存儲引擎,而且可以相互轉換.在所有的存儲引擎中,使用最廣泛的是My-ISAM 和 InnoDB[2-3].大多數的數據庫應用程序都會使用MyISAM或者InnoDB或者兩者的結合.

MyISAM是MySQL中創建數據表所默認采用的存儲引擎類型.它基于傳統的ISAM(有索引的順序訪問方法)存儲引擎,是用于存儲記錄和文件的標準方法.MyISAM具有檢查和修復表格的大多數工具,該類型的表格可以被壓縮,也支持全文搜索,但它們不是事務安全的,也不支持外鍵[4].

InnoDB是一種事務安全的存儲引擎.也就是說,這種存儲引擎提供了事務的提交和回滾功能,另外InnoDB還支持外鍵[1].雖然基于此存儲引擎的數據表查詢速度比MyISAM慢,但是在要求事

務安全的應用中,使用InnoDB顯然會比較方便.

2 情境假設

假設某網上書店的后臺數據庫中存在orders和order_items兩個表,其中orders表存儲訂單號、客戶編號、訂單金額和訂單提交日期,order_items表存儲訂單編號、圖書ISBN號、圖書數量,兩個表的邏輯結構分別為:

很顯然,當一個訂單被提交或者某個訂單信息需要刪除時,需要同時更新這兩個表的數據.如果一個表得到更新而另外一個表更新失敗,則數據庫中就會存在不一致的狀態[3].所以,對于這兩個表的操作構成一個事務,要么全部完成,要么全部不做,不允許部分完成.

下面分別針對InnoDB和MyISAM存儲引擎說明事務的實現方式.

3 基于InnoDB存儲引擎的事務實現

3.1 用 begin(或 start transaction)、commit、rollback實現

在MySQL中,可以通過向數據庫服務器發送“begin”指令或“start transaction”指令表示一個事務的開始[5].事務一旦開始,向數據庫做出的所有修改操作都會被緩存,直至執行到“commit”指令.也就是說,在“commit”指令之前的對于數據庫的操作并沒有真正寫入數據庫,因此對于其它用戶是不可見的.如果事務中的某個操作失敗,則應該使用“rollback”指令撤銷之前的其它操作,數據庫會回到事務執行之前的狀態[6-7].

上面提到的網上書店實例中,當一個訂單被提交之后,應該向orders表、order_items表分別添加相應的信息.對這兩個表的插入操作應該作為一個事務,具體操作如下:

3.2 用set改變MySQL的自動提交模式

在默認情況下,MySQL是以自動提交(autocommit)模式運行的,即向數據庫發送的每一條指令都是一個事務,即時提交[8].如果某事務由多個操作組成,則此種提交方式不符合事務的要求.解決方法是可以用“set autocommit=0”指令關閉自動提交,則提交給數據庫服務器的指令只是被緩存,并不立即寫入數據庫[9],等指令全部結束之后,用“commit”指令手動提交,事務結束后,再執

4 基于MyISAM存儲引擎的事務實現

基于MyISAM存儲引擎的數據表不支持事務,只能采用手動鎖定數據表的方式避免并發操作可能造成的數據不一致的問題[10].基本思想是:向數據庫發送“LOCK TABLES‘xyz’READ/WRITE”查詢,鎖定xyz表,READ表示鎖定類型為讀鎖定,WRITE表示鎖定類型為寫鎖定.如果一個線程獲得在一個表上的READ鎖,那么該線程和所有其他線程只能從表中讀數據,不能進行任何寫操作;如果一個線程在一個表上得到一個WRITE鎖,那么只有擁有這個鎖的線程可以從表中讀取和寫表,其它的線程被阻塞[11].當前線程向數據庫服務器發送“UNLOCK TABLES”查詢或當前線程與數據庫服務器的連接被關閉后,所有由當前線程鎖定的表被解鎖.

具體操作過程如下:

5 結語

事務處理是數據庫操作中一個不可回避的問題.在設計數據表時需要考慮是否會涉及事務應用,再根據具體情況選用不同的存儲引擎.如果表格只是應用于大規模的查詢操作,建議采用MyISAM存儲引擎;如果表格應用于頻繁的插入和刪除操作,建議采用InnoDB存儲引擎.雖然理論上可以先轉換數據表的存儲引擎,再去完成相應操作,但對于訪問量大的數據庫而言,頻繁轉換存儲引擎是不現實的.所以基于MyISAM和InnoDB存儲引擎的事務實現是從事PHP和MySQL平臺Web應用開發所必須掌握的基本技能.

[1]LukeWelling,Laura Thomson.PHP和 MySQLWeb開發[M].武欣,譯.北京:機械工業出版社,2009:307 -310.

[2]Paul D B,楊曉云,王建橋,等.MySQL技術內幕:第4版[M].北京:人民郵電出版社,2011:624-689.

[3]Charles A B.深入理解 MySQL:第1版[M].楊濤,王建橋,楊曉云,等譯.北京:人民郵電出版社,2010:382-416.

[4]Russell J,Dyer T.MySQL 核心技術手冊:第2 版[M].李紅軍,李冬梅,譯:北京:機械工業出版社,2009:359-429.

[5]王威.MySQL數據庫源代碼分析及存儲引擎的設計[D].南京:南京郵電大學,2012:35 -40.

[6]陳虎,唐海浩,廖江苗,等.面向批量插入優化的并行存儲引擎 MTPower[J].計算機學報,2010(8):1492 -1499.

[7]李亞偉.MySQL的存儲安全的研究與實現[D].武漢:華中科技大學,2011:18-23.

[8]顧治華,忽朝儉.MySQL存儲引擎與數據庫性能[J].計算機時代,2006(10):8-10.

[9]馬永成,肖詩斌,王弘蔚,等.MySql存儲引擎的研究和實現[J].計算機科學,2007,34(12):173 -175.

[10]羅凡,裴士輝,張雪松,等.MySQL中 InnoDB引擎的動態存儲管理[J].東北師大學報:自然科學版,2006,38(1):22 -26.

[11]黃雅萍,劉曉強,吳成義.基于MySQL和PHP的分布式事務處理[J].東華大學學報:自然科學版,2011,37(1):81 -85.

猜你喜歡
引擎指令數據庫
聽我指令:大催眠術
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 国产成人高精品免费视频| 久久综合九色综合97网| 亚洲精品无码日韩国产不卡| 免费看av在线网站网址| 无码电影在线观看| www.av男人.com| 欧美成人a∨视频免费观看| 国产91精品久久| 国产综合亚洲欧洲区精品无码| 日韩AV手机在线观看蜜芽| 国产黑丝一区| 国产欧美日韩在线一区| 午夜不卡福利| 久久精品国产一区二区小说| 91原创视频在线| 亚洲性日韩精品一区二区| 国产成人夜色91| a毛片免费观看| 日韩天堂在线观看| 久久夜色撩人精品国产| 亚洲AV无码久久精品色欲| 成人免费一级片| 亚洲视频影院| 国产网站一区二区三区| 久久99久久无码毛片一区二区| 欧美A级V片在线观看| 成人免费午夜视频| 极品av一区二区| 国产激情无码一区二区三区免费| 91毛片网| 精品国产免费第一区二区三区日韩| 国产综合色在线视频播放线视 | 免费在线国产一区二区三区精品| 亚洲国产高清精品线久久| 99热免费在线| 99er精品视频| 91视频首页| 欧美成人影院亚洲综合图| 999精品在线视频| 亚洲伊人天堂| 亚洲国产成人在线| 亚洲天堂在线免费| 欧美亚洲国产日韩电影在线| 亚洲91精品视频| 国产不卡在线看| 青青操国产| 亚洲综合18p| 欧美色图久久| 成人一级免费视频| 国产主播在线观看| 国产真实乱子伦视频播放| 狠狠久久综合伊人不卡| 国产精品久久久久久搜索| 福利在线一区| 99久久国产精品无码| 国产精品成人免费视频99| 久久这里只有精品8| 欧美亚洲香蕉| 亚洲a免费| 国产丝袜无码精品| 一本色道久久88| 日本午夜精品一本在线观看| 91九色国产在线| 再看日本中文字幕在线观看| 青青热久免费精品视频6| 四虎影视8848永久精品| 亚洲国产综合精品一区| 日韩欧美中文字幕在线韩免费| 女人18一级毛片免费观看| 91口爆吞精国产对白第三集| 老司机精品久久| a国产精品| 国产乱子伦精品视频| 日韩无码白| 国产精品主播| 999国内精品久久免费视频| 国产主播喷水| 国产男人天堂| 一级爆乳无码av| 国产美女久久久久不卡| 免费在线看黄网址| 国产资源站|