資源描述:
《mysql 存儲(chǔ)引擎和事務(wù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、存儲(chǔ)引擎最常見的是:Mysam和innoDB數(shù)據(jù)庫(kù)的engine顯示MyISAM,批量插入速度快,不支持事務(wù),鎖表InnoDB批量插入相對(duì)較慢,支持事務(wù),鎖行-----------官方文檔---------beginMySQL插件式存儲(chǔ)引擎的體系結(jié)構(gòu)下述存儲(chǔ)引擎是最常用的:·?????????MyISAM:默認(rèn)的MySQL插件式存儲(chǔ)引擎,它是在Web、數(shù)據(jù)倉(cāng)儲(chǔ)和其他應(yīng)用環(huán)境下最常使用的存儲(chǔ)引擎之一。注意,通過更改STORAGE_ENGINE配置變量,能夠方便地更改MySQL服務(wù)器的默認(rèn)存儲(chǔ)引擎?!?????????InnoDB:用于事務(wù)處理應(yīng)用程序,具有眾多特性,包括ACID事務(wù)支持。
2、·?????????BDB:可替代InnoDB的事務(wù)引擎,支持COMMIT、ROLLBACK和其他事務(wù)特性?!?????????Memory:將所有數(shù)據(jù)保存在RAM中,在需要快速查找引用和其他類似數(shù)據(jù)的環(huán)境下,可提供極快的訪問。·?????????Merge:允許MySQLDBA或開發(fā)人員將一系列等同的MyISAM表以邏輯方式組合在一起,并作為1個(gè)對(duì)象引用它們。對(duì)于諸如數(shù)據(jù)倉(cāng)儲(chǔ)等VLDB環(huán)境十分適合。·?????????Archive:為大量很少引用的歷史、歸檔、或安全審計(jì)信息的存儲(chǔ)和檢索提供了完美的解決方案。·?????????Federated:能夠?qū)⒍鄠€(gè)分離的MySQL服務(wù)器鏈接
3、起來,從多個(gè)物理服務(wù)器創(chuàng)建一個(gè)邏輯數(shù)據(jù)庫(kù)。十分適合于分布式環(huán)境或數(shù)據(jù)集市環(huán)境?!?????????Cluster/NDB:MySQL的簇式數(shù)據(jù)庫(kù)引擎,尤其適合于具有高性能查找要求的應(yīng)用程序,這類查找需求還要求具有最高的正常工作時(shí)間和可用性?!?????????Other:其他存儲(chǔ)引擎包括CSV(引用由逗號(hào)隔開的用作數(shù)據(jù)庫(kù)表的文件),Blackhole(用于臨時(shí)禁止對(duì)數(shù)據(jù)庫(kù)的應(yīng)用程序輸入),以及Example引擎(可為快速創(chuàng)建定制的插件式存儲(chǔ)引擎提供幫助)。----------------------------------end事務(wù)含義:通俗來將就是,一組操作,要么同時(shí)執(zhí)行,要么同時(shí)不
4、執(zhí)行。選擇存儲(chǔ)引擎InnoDB事務(wù)的使用:開啟事務(wù):starttransaction;執(zhí)行sql操作(結(jié)束事務(wù))commit(提交)/rollback(回滾/撤銷)模擬銀行轉(zhuǎn)賬示例:commit示例:說明:(結(jié)束事務(wù))commit(提交)/rollback(回滾/撤銷)之后,事務(wù)結(jié)束,如果需要再使用,那么需要重新開始事務(wù);rollback示例:事務(wù)原理:建庫(kù)建表的時(shí)候要選用InnoDB說明:-----------------摘自官方文檔--------begin不能回滾的語(yǔ)句有些語(yǔ)句不能被回滾。通常,這些語(yǔ)句包括數(shù)據(jù)定義語(yǔ)言(DDL)語(yǔ)句,比如創(chuàng)建或取消數(shù)據(jù)庫(kù)的語(yǔ)句,和創(chuàng)建、取消或更改
5、表或存儲(chǔ)的子程序的語(yǔ)句。您在設(shè)計(jì)事務(wù)時(shí),不應(yīng)包含這類語(yǔ)句。如果您在事務(wù)的前部中發(fā)布了一個(gè)不能被回滾的語(yǔ)句,則后部的其它語(yǔ)句會(huì)發(fā)生錯(cuò)誤,在這些情況下,通過發(fā)布ROLLBACK語(yǔ)句不能回滾事務(wù)的全部效果。?會(huì)造成隱式提交的語(yǔ)句以下語(yǔ)句(以及同義詞)均隱含地結(jié)束一個(gè)事務(wù),似乎是在執(zhí)行本語(yǔ)句前,您已經(jīng)進(jìn)行了一個(gè)COMMIT?!?????????ALTERFUNCTION,?ALTERPROCEDURE,?ALTERTABLE,?BEGIN,?CREATEDATABASE,?CREATEFUNCTION,?CREATEINDEX,?CREATEPROCEDURE,?CREATETABLE,?DR
6、OPDATABASE,?DROPFUNCTION,?DROPINDEX,?DROPPROCEDURE,?DROPTABLE,?LOADMASTERDATA,?LOCKTABLES,?RENAMETABLE,?SETAUTOCOMMIT=1,?STARTTRANSACTION,?TRUNCATETABLE,?UNLOCKTABLES.·?????????當(dāng)當(dāng)前所有的表均被鎖定時(shí),UNLOCKTABLES可以提交事務(wù)?!?????????CREATETABLE,?CREATEDATABASE?DROPDATABASE,?TRUNCATETABLE,?ALTERFUNCTION,?ALTER
7、PROCEDURE,?CREATEFUNCTION,?CREATEPROCEDURE,?DROPFUNCTION和DROPPROCEDURE等語(yǔ)句會(huì)導(dǎo)致一個(gè)隱含提交。·?????????InnoDB中的CREATETABLE語(yǔ)句被作為一個(gè)單一事務(wù)進(jìn)行處理。這意味著,來自用戶的ROLLBACK不會(huì)撤銷用戶在事務(wù)處理過程中創(chuàng)建的CREATETABLE語(yǔ)句。事務(wù)不能被嵌套。這是隱含COMMIT的結(jié)果。當(dāng)您發(fā)布一個(gè)STARTTRANSACTION語(yǔ)句或