大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

Java數(shù)據(jù)庫高級教程之原理知識點

更新時間:2020-05-26 15:18:39 來源:動力節(jié)點 瀏覽2666次

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

1.事務(wù)

1)定義

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

Java數(shù)據(jù)庫高級教程之原理知識點

2)特性

A.原子性

事務(wù)被視為不可分割的最小單元,事務(wù)的所有操作要么全部提交成功,要么全部失敗回滾。回滾可以用回滾日志來實現(xiàn),回滾日志記錄著事務(wù)所執(zhí)行的修改操作,在回滾時反向執(zhí)行這些修改操作即可。

B.一致性

數(shù)據(jù)庫在事務(wù)執(zhí)行前后都保持一致性狀態(tài)。在一致性狀態(tài)下,所有事務(wù)對一個數(shù)據(jù)的讀取結(jié)果都是相同的。對于關(guān)系型數(shù)據(jù)庫,要求更新過的數(shù)據(jù)能被后續(xù)的訪問都能看到,這是強一致性;如果能容忍后續(xù)的部分或者全部訪問不到,則是弱一致性**;如果經(jīng)過一段時間后要求能訪問到更新后的數(shù)據(jù),則是最終一致性。

C.隔離性

一個事務(wù)所做的修改在最終提交以前,對其它事務(wù)是不可見的。

D.持久性

一旦事務(wù)提交,則其所做的修改將會永遠保存到數(shù)據(jù)庫中。即使系統(tǒng)發(fā)生崩潰,事務(wù)執(zhí)行的結(jié)果也不能丟失。

2.并發(fā)一致性

1)丟失更新

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

2)不可重復讀

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

3)幻影讀

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

3.封鎖

1)封鎖粒度

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

2)封鎖類型

A.讀寫鎖

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

B.意向鎖

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

3)封鎖協(xié)議

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

SELECT 。。。 LOCK In SHARE MODE;SELECT 。。。 FOR UPDATE;

4.隔離級別

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

Java數(shù)據(jù)庫高級教程之原理知識點

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

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

6.Next-KeyLock

1)RecordLock

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

2)GapLocks

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

SELECTcFROMtWHEREcBETWEEN10and20FORUPDATE;

3)Next-KeyLock

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

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

Java數(shù)據(jù)庫相關(guān)視頻

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

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

以上就是動力節(jié)點java培訓機構(gòu)的小編針對“Java數(shù)據(jù)庫高級教程之原理知識點”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美午夜性春 | 男人的午夜 | 国产亚洲99影院 | 天天拍天天射 | 香蕉视频网站免费观视频 | 欧美性理论片在线观看片免费 | 高清一区高清二区视频 | 国产福利在线观看 | 男人午夜免费视频 | 免费超爽大片黄网站 | 1024国产欧美日韩精品 | 一区二区日本 | 色九九| 高清欧美一级在线观看 | 999精品视频在线 | 亚洲精品一区二区卡 | 免费观看亚洲视频 | 国产精品99久久久久久www | 91精品欧美成人 | 欧美日本另类xxx乱大交 | 亚洲国产一区视频 | 日本婷婷 | 亚洲人成在线观看 | 亚洲欧美在线一区 | 亚洲成在人天堂一区二区 | 不卡视频在线播放 | 久久成人精品视频 | 99久久精品无码一区二区毛片 | 欧美亚洲综合另类成人 | 国产亚洲欧美日韩国产片 | 99热精品久久 | 99免费在线观看视频 | 日本中文字幕在线观看视频 | 五月天婷五月天综合网在线 | 亚洲最大的成人网 | 久草视频免费在线看 | 97色在线视频 | 亚洲欧美人成综合在线最新 | 日韩激情中文字幕一区二区 | 久久久香蕉视频 | 国产欧美日韩一区二区三区视频 |