真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle邏輯讀怎么算 oracle邏輯運(yùn)算

oracle中邏輯讀的單位是什么?

有兩種讀:邏輯讀和物理讀

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出泊頭免費(fèi)做網(wǎng)站回饋大家。

數(shù)據(jù)庫讀寫的單位是數(shù)據(jù)塊。當(dāng)用戶最終得到的結(jié)果可能只是某個數(shù)據(jù)塊中的幾行或幾列。當(dāng)一個查詢語句被執(zhí)行時,服務(wù)器進(jìn)程會將相關(guān)的數(shù)據(jù)塊從數(shù)據(jù)文件中寫入內(nèi)存(buffer cache)。這就叫做物理讀。每讀取一個數(shù)據(jù)塊,即是一次物理讀。

而用戶需要的并不是整個數(shù)據(jù)塊,而是其中的幾行或幾列。從buffer cache中提取行的過程,便是邏輯讀。

而其中邏輯讀又分成兩種:即時讀(current read)和一致性讀(consistent read)。

(1)即時讀::即時讀就是讀取數(shù)據(jù)塊當(dāng)前的最新數(shù)據(jù)。任何時候在buffer cache中都只有一份當(dāng)前數(shù)據(jù)塊。即時讀通常發(fā)生在對數(shù)據(jù)進(jìn)行修改,刪除操作時。這時,進(jìn)程會給數(shù)據(jù)加上行級鎖,并且標(biāo)識數(shù)據(jù)為“臟數(shù)據(jù)”。

(2)一致性讀:

一致性讀就是為了保證數(shù)據(jù)的一致性。在Buffer Cache中的數(shù)據(jù)塊上都會有最后一次修改數(shù)據(jù)塊時的SCN。

如果一個事務(wù)需要修改數(shù)據(jù)塊中數(shù)據(jù),會先在回滾段中保存一份修改前數(shù)據(jù)和SCN的數(shù)據(jù)塊,然后再更新Buffer Cache中的數(shù)據(jù)塊的數(shù)據(jù)及其SCN,并標(biāo)識其為“臟”數(shù)據(jù)。

當(dāng)其他進(jìn)程讀取數(shù)據(jù)塊時,會先比較數(shù)據(jù)塊上的SCN和自己的SCN。如果數(shù)據(jù)塊上的SCN小于等于進(jìn)程本身的SCN,則直接讀取數(shù)據(jù)塊上的數(shù)據(jù);

如果數(shù)據(jù)塊上的SCN大于進(jìn)程本身的SCN,則會從回滾段中找出修改前的數(shù)據(jù)塊讀取數(shù)據(jù)。通常,普通查詢都是一致性讀。

綜上所述,邏輯讀的原理和過程比較復(fù)雜。邏輯讀的單位并不能簡單的認(rèn)為是個塊。

oracle如何讀取數(shù)據(jù)

Oracle讀取數(shù)據(jù)的最大限制取決于操作系統(tǒng)和Oracle對多塊讀IO的限制。在物理上來說,一個SQL語句要讀取某個記錄,必須將該記錄讀取到DB CACHE中,然后才能從DB CACHE中獲取,這種訪問我們一般稱為物理讀(READ),如果這個數(shù)據(jù)已經(jīng)存在于DB CACHE中,那么前臺進(jìn)程可以直接從DB CACHE中讀取數(shù)據(jù),這樣的讀取成為邏輯讀(GET),如果要讀取的數(shù)據(jù)已經(jīng)被修改,需要從UNDO中讀取前映像來獲取一致性的數(shù)據(jù),那么會從UNDO中取出前映像,和當(dāng)前的數(shù)據(jù)塊一起形成一個一致性讀塊(CR BLOCK),然后再從CR BLOCK中讀取數(shù)據(jù),這種訪問方式稱為一致性讀(CR GET)。 從邏輯上講, Oracle讀取數(shù)據(jù)通過三種途徑:全表掃描( Full Table Sacn,FTS )、引掃描、通過ROWID直接訪問。在閱讀SQL執(zhí)行計劃的時候,可以通過 TABLE ACCESS子句來查看Oracle訪問某個表的方法,一般來說,對于大型的表來說,如果出現(xiàn) TABLE ACCESS FULL 的提示,是需要加以重視的,一般情況下,對于大表的全表掃描應(yīng)該是盡量避免的。下面是一個簡單的執(zhí)行計劃:Query Plan----------------------------------------- SELECT STATEMENT [CHOOSE] Cost=1234 TABLE ACCESS FULL LARGE [:Q65001] [ANALYZED]查看SQL的執(zhí)行計劃的時候,最右邊的,最上面的操作是首先被執(zhí)行的,上面的例子只有一個操作,就是對表“LARGE”進(jìn)行全表掃描。當(dāng)這個步驟執(zhí)行完畢后,就會將結(jié)果集返回給上面一層的語句,上面的例子就是 SELECT STATEMENT 這個語句,一般來說 SELECT STATEMENT 是整個執(zhí)行計劃的頂層。 [CHOOSE]表明這個SQL語句的OPTIMIZER_GOAL ,在這個提示的右側(cè)是COST數(shù)據(jù),如果COST是有實(shí)際值的,那么說明使用了CBO優(yōu)化器,如果COST沒有實(shí)際值,那么說明使用了RBO優(yōu)化器。比如: SELECT STATEMENT [CHOOSE] Cost=COST只是一個相對的值,只是優(yōu)化器用來分析訪問路徑的優(yōu)劣的,相同的SQL, COST越小的執(zhí)行計劃,起執(zhí)行效果越好,開銷越小。而不同的SQL ,其COST值是沒有可比性的。 [:Q65001]指明這部分操作被采用并行查詢的方式執(zhí)行,

究竟怎么理解Oracle中的物理讀,邏輯讀,即時讀,一致讀和讀一致性

1. 物理讀

這個很容易理解,cpu需要的數(shù)據(jù)在內(nèi)存中找不到,那么此時必須去物理磁盤上獲取,必然產(chǎn)生物理i/o。

反應(yīng)在oracle中,就是會話需要某條數(shù)據(jù)時,在內(nèi)存的buffer cache中中沒有,此時就要去磁盤上的dbf文件中讀取。就產(chǎn)生物理讀。

2. 邏輯讀

這個概念是最清晰,但同時又是最模糊的。

按照計算機(jī)原理來講,邏輯讀,表示cpu需要的數(shù)據(jù)在內(nèi)存中被找到,數(shù)據(jù)被直接從內(nèi)存中傳入cpu執(zhí)行。

3. 即時讀(又叫當(dāng)前讀)

按照tom大師的描述:

當(dāng)前讀(Current read):得到塊來實(shí)際更新所要修改的行時,所完成的獲取就是當(dāng)前讀。

這么話怎么理解?

A:讀塊的時候要加鎖。如果讀塊的目的是為了定位行、然后修改,這時加的鎖和純讀的鎖并不一樣,雖然它們兩個都是讀操作。

因為加的鎖不同,就有了當(dāng)前讀和一致讀。

4. 一致讀

按照tom大師的描述:

一致讀(Consistent read):“發(fā)現(xiàn)”要修改的行時,所完成的獲取就是一致讀。

這么話怎么理解?

A:一致讀和當(dāng)前讀放在一起時,一致讀指的純讀。

5. 讀一致性

這個概念,無庸置疑。

讀一致性:Oracle在需要時會使用undo數(shù)據(jù)來構(gòu)造CR塊,從而提供非阻塞的查詢。


網(wǎng)頁標(biāo)題:oracle邏輯讀怎么算 oracle邏輯運(yùn)算
路徑分享:http://weahome.cn/article/hejesj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部