无码人妻A片一区二区三区_18禁裸乳无遮挡啪啪无码免费_91精品亚?影视在线?看_人人妻人人爽人人澡AV_国产精品人妻一区二区三区四区_午夜免费影视

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

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

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

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

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

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

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

  MySQL的事務

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

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

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

3.事務用來管理insert,update,delete 語句:

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

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

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

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

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

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

  事務的隔離級別

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

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

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

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

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

主站蜘蛛池模板: 偶像战士奇迹之音中文版在线观看 | 国产又粗又大又硬点视频 | ts另类国产人妖视频一区二区 | 水果视频污| 99ee6热久久免费精品6 | 又大又黄又硬视频 | 婷婷丁香色综合狠狠色 | 无码AV在线一本无码 | 日批视频免费 | 国产秋霞理论久久久 | 国产精品正在播放 | 免费av观看网站 | 中国三级黄色录像 | 成年日韩免费大片黄在线观看 | 久本草在线中文字幕亚洲 | 国产精品一区二区三区四区视频 | 免费久久99精品国产自在现线 | 亚洲欧洲在线一区 | 成人无码精品免费视频在线 | 亚洲一级影院 | 成人爽a毛片在线视频 | 欧洲成年人性生活免费视频 | 夜色综合 | 国产精品探花一区在线观看 | 能在线看的av | 人妻无码中文字幕 | 女人高潮一级一片 | 黄色尤物| 精品国产一区二区三区久久久久久 | 精品影视一区二区 | 97婷婷涩涩精品一区 | 在线免费观看一区二区三区 | 日韩av中文字幕在线免费观看 | 亚洲黄色站 | 五月天色综合 | 国产色产综合色产在线观看视频 | 性啪啪CHINESE东北女人 | 国产精品久久久久久成人 | 久久精品不卡 | 色视频网站在线观看 | 三及片日本|