黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java數(shù)據(jù)庫高級(jí)教程下載,原理知識(shí)點(diǎn)

Java數(shù)據(jù)庫高級(jí)教程下載,原理知識(shí)點(diǎn)

更新時(shí)間:2020-05-12 15:20:38 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2312次

Java數(shù)據(jù)庫高級(jí)教程下載,原理知識(shí)點(diǎn),掌握數(shù)據(jù)庫已經(jīng)成為了每個(gè)程序員的必備基本技能,今天我們就來帶大家徹徹底底弄數(shù)據(jù)庫原理的相關(guān)知識(shí)點(diǎn),內(nèi)容包括了事務(wù)、并發(fā)一致性、封鎖、隔離級(jí)別、多版本并發(fā)控制和Next-KeyLock。希望本文全面的講解可以一次性解決大家關(guān)于數(shù)據(jù)庫原理的所有疑問。

1.事務(wù)

(1)定義

事務(wù)指的是滿足ACID特性的一組操作,可以通過Commit提交一個(gè)事務(wù),也可以使用Rollback進(jìn)行回滾。

Java數(shù)據(jù)庫高級(jí)教程下載,原理知識(shí)點(diǎn)

(2)特性

  • 原子性:事務(wù)被視為不可分割的最小單元,事務(wù)的所有操作要么全部提交成功,要么全部失敗回滾。回滾可以用回滾日志來實(shí)現(xiàn),回滾日志記錄著事務(wù)所執(zhí)行的修改操作,在回滾時(shí)反向執(zhí)行這些修改操作即可。
  • 一致性:數(shù)據(jù)庫在事務(wù)執(zhí)行前后都保持一致性狀態(tài)。在一致性狀態(tài)下,所有事務(wù)對(duì)一個(gè)數(shù)據(jù)的讀取結(jié)果都是相同的。對(duì)于關(guān)系型數(shù)據(jù)庫,要求更新過的數(shù)據(jù)能被后續(xù)的訪問都能看到,這是強(qiáng)一致性;如果能容忍后續(xù)的部分或者全部訪問不到,則是弱一致性**;如果經(jīng)過一段時(shí)間后要求能訪問到更新后的數(shù)據(jù),則是最終一致性。
  • 隔離性:一個(gè)事務(wù)所做的修改在最終提交以前,對(duì)其它事務(wù)是不可見的。
  • 持久性:一旦事務(wù)提交,則其所做的修改將會(huì)永遠(yuǎn)保存到數(shù)據(jù)庫中。即使系統(tǒng)發(fā)生崩潰,事務(wù)執(zhí)行的結(jié)果也不能丟失。

2.并發(fā)一致性

(1)丟失更新

T1和T2兩個(gè)事務(wù)都對(duì)一個(gè)數(shù)據(jù)進(jìn)行修改,T1先修改,T2隨后修改,T2的修改覆蓋了T1的修改。這里舉個(gè)飛機(jī)訂票系統(tǒng)的例子方便大家了解:甲售票點(diǎn)(甲事務(wù))讀出某航班的機(jī)票余額A,設(shè)A=16;乙售票點(diǎn)(乙事務(wù))讀出同一航班的機(jī)票余額A,也為16;甲售票點(diǎn)賣出一張機(jī)票,修改余額A←A-1。所以A為15,把A寫回?cái)?shù)據(jù)庫;乙售票點(diǎn)也賣出一張機(jī)票,修改余額A←A-1。所以A為15,把A寫回?cái)?shù)據(jù)庫。結(jié)果明明賣出兩張機(jī)票,數(shù)據(jù)庫中機(jī)票余額只減少1。

(2)不可重復(fù)讀

T2讀取一個(gè)數(shù)據(jù),T1對(duì)該數(shù)據(jù)做了修改。如果T2再次讀取這個(gè)數(shù)據(jù),此時(shí)讀取的結(jié)果和第一次讀取的結(jié)果不同。具體來講就是,當(dāng)前事務(wù)先進(jìn)行了一次數(shù)據(jù)讀取,然后再次讀取到的數(shù)據(jù)是別的事務(wù)修改成功的數(shù)據(jù),導(dǎo)致兩次讀取到的數(shù)據(jù)不匹配。

 (3)幻影讀

T1讀取某個(gè)范圍的數(shù)據(jù),T2在這個(gè)范圍內(nèi)插入新的數(shù)據(jù),T1再次讀取這個(gè)范圍的數(shù)據(jù),此時(shí)讀取的結(jié)果和和第一次讀取的結(jié)果不同。或者用更通俗地說,事務(wù)A首先根據(jù)條件索引得到N條數(shù)據(jù),然后事務(wù)B改變了這N條數(shù)據(jù)之外的M條或者增添了M條符合事務(wù)A搜索條件的數(shù)據(jù),導(dǎo)致事務(wù)A再次搜索發(fā)現(xiàn)有N+M條數(shù)據(jù)了,就產(chǎn)生了幻讀。換句話說,當(dāng)前事務(wù)讀第一次取到的數(shù)據(jù)比后來讀取到數(shù)據(jù)條目少。

3.封鎖

(1)封鎖粒度

MySQL中提供了兩種封鎖粒度:行級(jí)鎖以及表級(jí)鎖。應(yīng)該盡量只鎖定需要修改的那部分?jǐn)?shù)據(jù),而不是所有的資源。鎖定的數(shù)據(jù)量越少,發(fā)生鎖爭用的可能就越小,系統(tǒng)的并發(fā)程度就越高。但是加鎖需要消耗資源,鎖的各種操作(包括獲取鎖、釋放鎖、以及檢查鎖狀態(tài))都會(huì)增加系統(tǒng)開銷。因此封鎖粒度越小,系統(tǒng)開銷就越大。在選擇封鎖粒度時(shí),需要在鎖開銷和并發(fā)程度之間做一個(gè)權(quán)衡。

(2)封鎖類型

 A:讀寫鎖

 排它鎖簡寫為X鎖,又稱寫鎖;共享鎖簡寫為S鎖,又稱讀鎖。有以下兩個(gè)規(guī)定:一個(gè)事務(wù)對(duì)數(shù)據(jù)對(duì)象A加了X鎖,就可以對(duì)A進(jìn)行讀取和更新。加鎖期間其它事務(wù)不能對(duì)A加任何鎖。一個(gè)事務(wù)對(duì)數(shù)據(jù)對(duì)象A加了S鎖,可以對(duì)A進(jìn)行讀取操作,但是不能進(jìn)行更新操作。加鎖期間其它事務(wù)能對(duì)A加S鎖,但是不能加X鎖。

B:意向鎖

使用意向鎖(IntentionLocks)可以更容易地支持多粒度封鎖。在存在行級(jí)鎖和表級(jí)鎖的情況下,事務(wù)T想要對(duì)表A加X鎖,就需要先檢測是否有其它事務(wù)對(duì)表A或者表A中的任意一行加了鎖,那么就需要對(duì)表A的每一行都檢測一次,這是非常耗時(shí)的。意向鎖在原來的X/S鎖之上引入了IX/IS,IX/IS都是表鎖,用來表示一個(gè)事務(wù)想要在表中的某個(gè)數(shù)據(jù)行上加X鎖或S鎖。有以下兩個(gè)規(guī)定:一個(gè)事務(wù)在獲得某個(gè)數(shù)據(jù)行對(duì)象的S鎖之前,必須先獲得表的IS鎖或者更強(qiáng)的鎖;一個(gè)事務(wù)在獲得某個(gè)數(shù)據(jù)行對(duì)象的X鎖之前,必須先獲得表的IX鎖。

(3)封鎖協(xié)議

封鎖協(xié)議分為三級(jí)封鎖協(xié)議和兩段鎖協(xié)議。MySQL的InnoDB存儲(chǔ)引擎采用兩段鎖協(xié)議,會(huì)根據(jù)隔離級(jí)別在需要的時(shí)候自動(dòng)加鎖,并且所有的鎖都是在同一時(shí)刻被釋放,這被稱為隱式鎖定。InnoDB也可以使用特定的語句進(jìn)行顯示鎖定:

SELECT...LOCKInSHAREMODE;SELECT...FORUPDATE;

4.隔離級(jí)別

為了避免丟失更新、臟讀、不可重復(fù)讀和幻讀,在標(biāo)準(zhǔn)SQL規(guī)范中,定義了4個(gè)事務(wù)隔離級(jí)別,不同的隔離級(jí)別對(duì)事務(wù)的處理不同。具體如下圖:

Java數(shù)據(jù)庫高級(jí)教程下載,原理知識(shí)點(diǎn)

5.多版本并發(fā)控制

多版本并發(fā)控制是MySQL的InnoDB存儲(chǔ)引擎實(shí)現(xiàn)隔離級(jí)別的一種具體方式,用于實(shí)現(xiàn)提交讀和可重復(fù)讀這兩種隔離級(jí)別。而未提交讀隔離級(jí)別總是讀取最新的數(shù)據(jù)行,無需使用MVCC。可串行化隔離級(jí)別需要對(duì)所有讀取的行都加鎖,單純使用MVCC無法實(shí)現(xiàn)。MVCC在大多數(shù)情況下代替了行鎖。最早的數(shù)據(jù)庫系統(tǒng),只有讀讀之間可以并發(fā),讀寫,寫讀,寫寫都要阻塞。引入多版本之后,只有寫寫之間相互阻塞,其他三種操作都可以并行,這樣大幅度提高了InnoDB的并發(fā)度。但是,使用MVCC每行記錄都需要額外的存儲(chǔ)空間,需要做更多的行維護(hù)和檢查工作。

6.Next-KeyLock

(1)RecordLock

鎖定一個(gè)記錄上的索引,而不是記錄本身。如果表沒有設(shè)置索引,InnoDB會(huì)自動(dòng)在主鍵上創(chuàng)建隱藏的聚簇索引,因此RecordLock依然可以使用。

(2)GapLocks

鎖定索引之間的間隙,但是不包含索引本身。例如當(dāng)一個(gè)事務(wù)執(zhí)行以下語句,其它事務(wù)就不能在t.c中插入15。

SELECTcFROMtWHEREcBETWEEN10and20FORUPDATE;

(3)Next-KeyLock

它是RecordLock和GapLock的結(jié)合,不僅鎖定一個(gè)記錄上的索引,也鎖定索引之間的間隙。例如一個(gè)索引包含以下值:10,11,13,and20,那么就需要鎖定以下區(qū)間:

(negativeinfinity,10](10,11](11,13](13,20](20,positiveinfinity)

Java數(shù)據(jù)庫高級(jí)教程下載,原理知識(shí)點(diǎn)

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java數(shù)據(jù)庫高級(jí)教程下載,原理知識(shí)點(diǎn)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

Java數(shù)據(jù)庫免費(fèi)視頻教程

老杜最新MySQL教程:http://www.ilovecolors.com.cn/javavideo/111.html

老杜最新JDBC教程:http://www.ilovecolors.com.cn/javavideo/112.html

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲人成网站色7799在线观看 | 99视频国产在线 | 理论福利午夜 | 天天干夜夜笙歌 | 国产高清免费的视频 | 中国黄色毛片 | 性色生活片免费放 | 国产亚洲欧美日韩综合另类 | 日狠狠| 成人在线免费 | 性欧美高清video | 国产精品久久久久久福利漫画 | 国产成人精品免费视频大全麻豆 | 日韩2区| 一级毛片a女人刺激视频免费 | 久久夜视频 | 国产亚洲欧美成人久久片 | 高清一级做a爱过程免费视频 | 日本一区二区三区免费观看 | 国产精品麻豆一区二区三区v视界 | 成人在线一区二区三区 | 麻豆久久精品免费看国产 | 精品在线播放视频 | 三级伦理片高清在线观看播放 | 国产精品视频福利一区二区 | 欧美最猛性xxxx69交 | 日韩欧美二区在线观看 | 欧美一级视频在线高清观看 | 动漫成年美女黄漫网站小视频 | 日韩中文精品亚洲第三区 | 99网站在线观看 | h视频在线免费观看 | 亚洲视频在线观看网址 | 日亚毛片免费乱码不卡一区 | 国产日本欧美高清免费区 | 波多野结衣视频免费在线观看 | 国产日韩欧美综合在线 | 国产成人午夜91精品麻豆剧场 | 色黄在线观看 | 中文三 级 黄 色 片 | 午夜色影院 |