伊人99re_av日韩成人_91高潮精品免费porn_色狠狠色婷婷丁香五月_免费看的av_91亚色网站

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁 > IT資訊 > 數(shù)據(jù)庫 > 揭秘MySQL數(shù)據(jù)庫的引擎和事務(wù)

揭秘MySQL數(shù)據(jù)庫的引擎和事務(wù)

2020-06-17 15:55:22 | 來源:中培企業(yè)IT培訓網(wǎng)

MySQL是由瑞典MySQL AB公司開發(fā)的關(guān)系數(shù)據(jù)庫管理系統(tǒng),屬于Oracle旗下的產(chǎn)品。MySQL數(shù)據(jù)表引擎包括MyISAM,InnoDB,HEAP,BOB,ARCHIVE,CSV等。其中,MyISAM:成熟,穩(wěn)定,易于管理且易于讀取。表級鎖不支持某些功能(事務(wù)等)。InnoDB:支持事務(wù),外鍵等功能,數(shù)據(jù)行鎖定。它占用大量空間,并且不支持全文本索引(5.6.4之后支持全文本索引)。兩種常用的引擎是:MyISAM和InnoDB。

  MySQL 的存儲引擎,myisam和innodb的區(qū)別?

1.MyISAM 是非事務(wù)的存儲引擎,適合用于頻繁查詢的應用。表鎖,不會出現(xiàn)死鎖,適合小數(shù)據(jù),小并發(fā)。

2.innodb是支持事務(wù)的存儲引擎,合于插入和更新操作比較多的應用,設(shè)計合理的話是行鎖(最大區(qū)別就在鎖的級別上),適合大數(shù)據(jù),大并發(fā)。

  MySQL的事務(wù)

MySQL事務(wù)主要用于處理操作量大,復雜度高的數(shù)據(jù)。比如說,在人員管理系統(tǒng)中,你刪除一個人員,你既需要刪除人員的基本資料,也要刪除和該人員相關(guān)的信息,如信箱,文章等等,這樣,這些數(shù)據(jù)庫操作語句就構(gòu)成一個事務(wù)!

1.在MySQL中只有使用了Innodb數(shù)據(jù)庫引擎的數(shù)據(jù)庫或表才支持事務(wù)。

2.事務(wù)處理可以用來維護數(shù)據(jù)庫的完整性,保證成批的 SQL 語句要么全部執(zhí)行,要么全部不執(zhí)行。

3.事務(wù)用來管理insert,update,delete 語句:

一般來說,事務(wù)是必須滿足4個條件(ACID):原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

(1)原子性:一個事務(wù)(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結(jié)束在中間某個環(huán)節(jié)。事務(wù)在執(zhí)行過程中發(fā)生錯誤,會被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個事務(wù)從來沒有執(zhí)行過一樣。

(2)一致性:在事務(wù)開始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設(shè)規(guī)則,這包含資料的精確度、串聯(lián)性以及后續(xù)數(shù)據(jù)庫可以自發(fā)性地完成預定的工作。

(3)數(shù)據(jù)庫允許多個并發(fā)事務(wù)同時對其數(shù)據(jù)進行讀寫和修改的能力,隔離性可以防止多個事務(wù)并發(fā)執(zhí)行時由于交叉執(zhí)行而導致數(shù)據(jù)的不一致。

(4)事務(wù)隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。

(5)事務(wù)處理結(jié)束后,對數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會丟失。

  事務(wù)的隔離級別

1.Read uncommitted 讀未提交,顧名思義,就是一個事務(wù)可以讀取另一個未提交事務(wù)的數(shù)據(jù)。事例:老板要給程序員發(fā)工資,程序員的工資是3.6萬/月。但是發(fā)工資時老板不小心按錯了數(shù)字,按成3.9萬/月,該錢已經(jīng)打到程序員的戶口,但是事務(wù)還沒有提交,就在這時,程序員去查看自己這個月的工資,發(fā)現(xiàn)比往常多了3千元,以為漲工資了非常高興。但是老板及時發(fā)現(xiàn)了不對,馬上回滾差點就提交了的事務(wù),將數(shù)字改成3.6萬再提交。分析:實際程序員這個月的工資還是3.6萬,但是程序員看到的是3.9萬。他看到的是老板還沒提交事務(wù)時的數(shù)據(jù)。這就是臟讀。

2.Read committed 讀提交,顧名思義,就是一個事務(wù)要等另一個事務(wù)提交后才能讀取數(shù)據(jù)。事例:程序員拿著信用卡去享受生活(卡里當然是只有3.6萬),當他埋單時(程序員事務(wù)開啟),收費系統(tǒng)事先檢測到他的卡里有3.6萬,就在這個時候!程序員的妻子要把錢全部轉(zhuǎn)出充當家用,并提交。當收費系統(tǒng)準備扣款時,再檢測卡里的金額,發(fā)現(xiàn)已經(jīng)沒錢了(第二次檢測金額當然要等待妻子轉(zhuǎn)出金額事務(wù)提交完)。程序員就會很郁悶,明明卡里是有錢的…分析:這就是讀提交,若有事務(wù)對數(shù)據(jù)進行更新(UPDATE)操作時,讀操作事務(wù)要等待這個更新操作事務(wù)提交后才能讀取數(shù)據(jù),可以解決臟讀問題。但在這個事例中,出現(xiàn)了一個事務(wù)范圍內(nèi)兩個相同的查詢卻返回了不同數(shù)據(jù),這就是不可重復讀。

3.Repeatable read 重復讀,就是在開始讀取數(shù)據(jù)(事務(wù)開啟)時,不再允許修改操作事例:程序員拿著信用卡去享受生活(卡里當然是只有3.6萬),當他埋單時(事務(wù)開啟,不允許其他事務(wù)的UPDATE修改操作),收費系統(tǒng)事先檢測到他的卡里有3.6萬。這個時候他的妻子不能轉(zhuǎn)出金額了。接下來收費系統(tǒng)就可以扣款了。分析:重復讀可以解決不可重復讀問題。寫到這里,應該明白的一點就是,不可重復讀對應的是修改,即UPDATE操作。但是可能還會有幻讀問題。因為幻讀問題對應的是插入INSERT操作,而不是UPDATE操作。

4.Serializable 序列化 Serializable 是最高的事務(wù)隔離級別,在該級別下,事務(wù)串行化順序執(zhí)行,可以避免臟讀、不可重復讀與幻讀。但是這種事務(wù)隔離級別效率低下,比較耗數(shù)據(jù)庫性能,一般不使用。什么時候會出現(xiàn)幻讀?事例:程序員某一天去消費,花了2千元,然后他的妻子去查看他今天的消費記錄(全表掃描FTS,妻子事務(wù)開啟),看到確實是花了2千元,就在這個時候,程序員花了1萬買了一部電腦,即新增INSERT了一條消費記錄,并提交。當妻子打印程序員的消費記錄清單時(妻子事務(wù)提交),發(fā)現(xiàn)花了1.2萬元,似乎出現(xiàn)了幻覺,這就是幻讀。序列化解決幻讀。  

以上就是關(guān)于MySQL的引擎和事務(wù)的相關(guān)內(nèi)容介紹,想了解更多MySQL數(shù)據(jù)庫的信息,請繼續(xù)關(guān)注中培偉業(yè)。

主站蜘蛛池模板: 天天躁日日躁狠狠躁aab吃奶 | 亚洲精品毛A片久久久爽 | 秋霞在线观看视频 | 国产一区二区三区视频在线观看 | 国产清纯白嫩初高生在线播放视频 | 久久精品一区二区三区四区 | 一级黄色片a | 中文字幕一区佐久间英子 | 色偷偷av一区二区三区 | 娇妻与公h喂奶 | A级无遮挡超级高清-在线观看 | 伊人色婷婷 | 国产乱国产乱300精品 | 国产另类交视频免费观看 | 日韩av天堂无码一区二区三区 | 日本真人添下面视频免费 | 亚洲无吗一区 | 4hu最新网 | 欧美人伦禁忌.5 | 高清国产AV一区二区三区 | 国产伊人一区 | 亚洲国产精品美女久久久久 | 情欲久久| 色偷偷中文字幕综合久久 | 精品欧洲AV无码一区二区三区 | 女人和拘做受全程看免费软件 | av在线亚洲男人的天堂 | 国产福利在线不卡 | 毛片小视频 | 亚洲一区二区精品蜜桃 | 国产精品中文字幕一区二区三区 | chinese河北hd乱子伦 | 人妻少妇69式99偷拍 | 88av中文字幕 | 三级网站视频在在线播放 | 91在线高清 | 精品国产乱码久久久久久蜜臀 | 国产精品国产三级国产专区52 | 国产一级一级国产 | 91九色丨porny最新地址 | 欧洲美女与动zooz |