freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

oracle原理學(xué)習(xí)筆記-資料下載頁(yè)

2025-06-29 07:38本頁(yè)面
  

【正文】 但兩個(gè)dml 之間在分配各自的blocks的時(shí)候是交替進(jìn)行的而不是串行的),也不必等別的trans或者別的DML用完之后才能用,正因?yàn)橛幸粋€(gè)交替的過(guò)程才會(huì)造成等待previously freed blocks:這個(gè)應(yīng)該指的是 當(dāng)session 在做事務(wù)的時(shí)候可能釋放block,這些釋放的block 就處于 tx freelist 上,這個(gè) tx freelist 上的 block 是可以被進(jìn)程自己使用的,也就是說(shuō) previously freed blocks 就是 進(jìn)程自己釋放的block。當(dāng)一定時(shí)間之后(目前不詳時(shí)機(jī)是如何觸發(fā)的),這些 previously freed blocks 會(huì)被釋放回 MFL 。所以當(dāng)進(jìn)程在 tx freelist 上找不著(也就是沒(méi)有previously freed blocks),然后就去尋找 process freelist (也就是根據(jù)進(jìn)程號(hào)算出來(lái)的freelist) ,如果還沒(méi)有,那就從 MFL 去分配,如果MFL 還沒(méi)有,那就移動(dòng) HWM假設(shè) freelists = 10,則實(shí)際 還存在一個(gè)master freelist,當(dāng)HWM移動(dòng)的時(shí)候會(huì)移動(dòng) (10 + 1)*5(or _bump_highwater_mark_count ) 個(gè)塊,但這些塊不是直接掛在 process freelist上,更不是 transection freelist,而是放在master freelist上,這樣這些塊對(duì)于所有transection和 process freelist 都是可使用的,因?yàn)榇蠹叶紩?huì)在 transection freelist找不到的時(shí)候自己的process freelist,然后找master freelist的,只是不能找別的process freelist而已。關(guān)于死塊,是這樣的:當(dāng)oracle在freelist中搜索5(_release_insert_threshold :default 5)個(gè)block當(dāng)發(fā)現(xiàn)每個(gè)block都不能裝下一個(gè)行的時(shí)候(因 pctused 過(guò)高刪除回收等原因),就直接移動(dòng)HWm以獲取新行,這是合理的。 這樣,有可能存在這樣的現(xiàn)象,這個(gè)所謂的死塊,總是大量的影響,會(huì)可能很頻繁地被這么搜索5次然后擴(kuò)展HWM,(假如頻繁刪除的話)總結(jié)一下:如果我們定義了storage(freelists 4 freelist groups 2),那么在segment header block中有1個(gè)Super Master Free list,有2個(gè)freelist block,每個(gè)freelist block中又有1個(gè)master free list和4個(gè)process free list,當(dāng)DML操作產(chǎn)生將本來(lái)不是free的block重新標(biāo)志為空閑時(shí),動(dòng)態(tài)產(chǎn)生一個(gè)transaction free list。所有的free list record中都只記錄flag,list header block dba和list tail block dba,整個(gè)freelist是由存在于每個(gè)位于列表中的block header中指向下一個(gè)free block地址的指針這樣類似鏈表的結(jié)構(gòu)來(lái)完成的。1。session需要空間了,先在自己的TX Freelist上找,這是在找 previously freed blocks 2。找不到,找Process freelist3。再找不到,找main freelist4。再找不到,就是這一步,返回去找其它的TX freelist,看看有沒(méi)有mit了的,如果有,merge到main freelist上(這個(gè)時(shí)候其它事務(wù)的free block就能被這個(gè)事務(wù)使用了),然后移動(dòng)最多5個(gè)block到自己的process freelist上,開(kāi)始使用5。所有的TX freelist(是所有的還是找一個(gè)定值的數(shù)量,這個(gè)還需要驗(yàn)證,因?yàn)槿绻蟹浅6嗟膖ransaction,是找完所有的效率高還是到了某個(gè)地步找不到干脆直接分配新的extent效率高)上都沒(méi)有已經(jīng)mit的事務(wù),那么此時(shí)才移動(dòng) HWM所以,照這樣的步驟,同意你的看法,多個(gè)freelist不會(huì) 造成實(shí)際上的空間浪費(fèi),只有多個(gè)freelist group時(shí)候才會(huì)有浪費(fèi)。unmited TFL 是指 本session 還沒(méi)有提交的臨時(shí)存在的 TFL(私有的)PFL 是為 本進(jìn)程選擇的 freelist process freelist然后是 MFL (設(shè)置了freelist 1 則存在一個(gè) MFL) main freelist如果是搜索空閑空間,是先搜索 unmit TFl PFLMFL(這時(shí)可能回收 TFLs 中block進(jìn)MFL) 移動(dòng)HWM行一行包括兩部分:行頭以及與行中的列相關(guān)的實(shí)際數(shù)據(jù)。鏈接的行和非鏈接的行都如此。對(duì)于非鏈接的行,將是一整行;而對(duì)于鏈接的行,它是行的一部分。行頭至少用3個(gè)字節(jié)包含指向行的元數(shù)據(jù),如所有行段的ROWID(如果行已經(jīng)是分鏈/遷移的),物理地存在于這一行部分或整行中,以及集群關(guān)鍵字(如果表是集群的一部分)。實(shí)際的數(shù)據(jù)部分包含列頭和列數(shù)據(jù)的長(zhǎng)度。注意,一列(如LONG RAW)可能在于多個(gè)塊。因此,可以用列頭來(lái)識(shí)別每塊中列數(shù)據(jù)的大小。這對(duì)別的變化的列數(shù)據(jù)類型也有用,如VARCHAR、VARCHAR2和RAW,可用來(lái)識(shí)別塊中實(shí)際包含了多少列數(shù)據(jù)。對(duì)于固定長(zhǎng)度的列,列頭所指向的長(zhǎng)度也是固定的(如DATA列有7個(gè)字節(jié))。對(duì)于最多包含250個(gè)字節(jié)的列使用1個(gè)字節(jié)而對(duì)于更大的列(超過(guò)250個(gè)字節(jié))使用3個(gè)字節(jié)。小于250個(gè)字節(jié)的可變長(zhǎng)度的列有1個(gè)字節(jié)的頭。然而,如果該列更新后體積變大,列頭要擴(kuò)展為3個(gè)字節(jié)。如果因?yàn)樽杂煽臻g有限而使這一擴(kuò)展無(wú)法進(jìn)行,那么把該行遷移。 如果列包含一個(gè)NULL(沒(méi)有任何值)而且它物理地放NULL或NOT NULL(它們實(shí)際上有值)之前,那么前面N U L L列的列頭用0作為數(shù)據(jù)大小。另外,如果一個(gè)包含NULL值的列物理地放在行的末尾,那么即使是列頭也不能由Oracle維護(hù)。這是因?yàn)殚_(kāi)始新的一行表明當(dāng)前行已經(jīng)結(jié)束了而所有沒(méi)有提供的列中的值都為NULL。因此,在NULL列之前聲明所有必要的列(非空的)有助于優(yōu)化數(shù)據(jù)庫(kù)中中間的使用操作。列通常以聲明的數(shù)據(jù)保存,除非在某些情況下,如當(dāng)表中包含一個(gè)LONG/LONG RAW列時(shí),在這種情況下,后者通常保存在最后。同樣,如果修改表使其包含一個(gè)新的列,則最新的列保存在最后。行鏈接:產(chǎn)生在第一次插入數(shù)據(jù)的時(shí)候如果一個(gè)block不能存放一行記錄的情況下。這種情況下,Oracle將使用鏈接一個(gè)或者多個(gè)在這個(gè)段中保留的block存儲(chǔ)這一行記錄,行鏈接比較容易發(fā)生在比較大的行上,例如行上有LONG、LONG RAW、LOB等數(shù)據(jù)類型的字段,這種時(shí)候行鏈接是不可避免的會(huì)產(chǎn)生的。 行遷移:當(dāng)一行記錄初始插入的時(shí)候事可以存儲(chǔ)在一個(gè)block中的,由于更新操作導(dǎo)致行長(zhǎng)增加了,而block的自由空間已經(jīng)完全滿了,這個(gè)時(shí)候就產(chǎn)生了行遷移。在這種情況下,Oracle將會(huì)遷移整行數(shù)據(jù)到一個(gè)新的block中(假設(shè)一個(gè)block中可以存儲(chǔ)下整行數(shù)據(jù)),Oracle會(huì)保留被遷移行的原始指針指向新的存放行數(shù)據(jù)的block,這就意味著被遷移行的ROW ID是不會(huì)改變的。Oracle會(huì)將整行的數(shù)據(jù)遷移到一個(gè)新的數(shù)據(jù)塊上,而將該行原先的空間只放一個(gè)指針,指向該行的新的位置,并且該行原先空間的剩余空間不再被數(shù)據(jù)庫(kù)使用,這些剩余的空間我們將其稱之為空洞,這就是產(chǎn)生表碎片的主要原因檢測(cè)數(shù)據(jù)庫(kù)中存在有了行遷移和行鏈接:(在$ORACLE_HOME/rdbms/admin目錄下)生成chained_rows表(將表空間置為TOOLS,防治SYSTEM表空間分段),然后利用ANALYZE TABLE table_name LIST CHAINED ROWS INTO chained_rows命令逐個(gè)分析表,將分析的結(jié)果存入chained_rows表中。SELECT table_name, count(*) from chained_rows GROUP BY table_name。 SELECT name, value FROM v$sysstat WHERE name = 39。table fetch continued row39。 索引B*樹(shù)索引每個(gè)葉節(jié)點(diǎn)可存放多個(gè)物理行;增加分支數(shù)(階數(shù))、減少高度,以加速對(duì)葉節(jié)點(diǎn)的訪問(wèn);關(guān)鍵字被刪除、更新,并不刪除索引中原關(guān)鍵字占用的空間;插入、更新操作將會(huì)有可能引發(fā)B樹(shù)的拆分等行為;一般情況下(視關(guān)鍵字長(zhǎng)度),107的索引都可以被3層的B樹(shù)容納。PCTFREE的設(shè)置: PCTFREE只在創(chuàng)建時(shí)使用,針對(duì)葉結(jié)點(diǎn)塊。 如果以后會(huì)有大量更新操作,需要設(shè)置大的PCTFREE,減少運(yùn)行時(shí)的插入開(kāi)銷;如果要求創(chuàng)建索引的時(shí)間少(因?yàn)榇蟊頃?huì)造成系統(tǒng)暫時(shí)停工),需要設(shè)置小的PCTFREE,將更多的行壓縮到葉節(jié)點(diǎn)塊中,減少拆分;對(duì)于值不斷增加的列,設(shè)置小的PCTFREE,因?yàn)橹挥杏夜?jié)點(diǎn)增加,而左節(jié)點(diǎn)處于靜止; 監(jiān)控索引:analyze index…validate structure 。該視圖中,如果刪除葉節(jié)點(diǎn)行/全部葉節(jié)點(diǎn)行比率高(20%),或索引的高度(height列4),應(yīng)重建索引;頻繁更新或刪除索引列:會(huì)導(dǎo)致左樹(shù)稀疏、右樹(shù)稠密(滑動(dòng)索引),需要進(jìn)行重建索引Dba_indexes: AVG_LEAF_BLOCKS_PER_KEY = LEAF_BLOCKS / DISTINCT_KEYSAVG_DATA_BLOCKS_PER_KEY = 單一鍵值指向的表中塊的平均數(shù)量CLUSTERING_FACTOR = 索引順序?qū)?yīng)的行需要遍歷多少個(gè)塊ALTER SESSION SET EVENTS ’IMMEDIATE TRACE NAME TREEDUMP LEVEL 該命令生成一個(gè)跟蹤文件在udump下,內(nèi)容大致如下: begin tree dump branch: 0x1403f07 20987655 (1: nrow: 351, level: 1) leaf: 0x1403d9d 20987293 (1: nrow: 341 rrow: 341) leaf: 0x1403d9e 20987294 (0: nrow: 341 rrow: 341) leaf: 0x1403d9f 20987295 (1: nrow: 341 rrow: 341)...... branch: 0x140406c 20988012 (0: nrow: 350, level: 1) leaf: 0x1403f06 20987654 (1: nrow: 341 rrow: 341) leaf: 0x1403f08 20987656 (0: nrow: 341 rrow: 341) leaf: 0x1403f0a 20987658 (1: nrow: 341 rrow: 341)... end tree dumpbranch(分支),如果leaf(葉子)的行數(shù)基本接近表明索引健康,否則重建;如果索引很大,而行數(shù)很少表明唯一性程度低,建議轉(zhuǎn)換為位映射索引。重建索引: ALTER INDEX REBUILD 只能重構(gòu),不能檢查錯(cuò)誤推薦:1) 檢查索引錯(cuò)誤 ANALYZE TABLE … VALIDATE STRUCTURE CASCADE (這個(gè)過(guò)程進(jìn)行索引行與表的相互匹配)2) 如果沒(méi)有錯(cuò)誤可以 REBUILD ,否則 DROP 、CREATE INDEX下面給出一些在創(chuàng)建索引時(shí)應(yīng)該考慮的準(zhǔn)則:要限制一個(gè)表上的索引數(shù)量,一般不要超過(guò)10個(gè)。盡量限制在5個(gè)以內(nèi)。索引會(huì)占用數(shù)據(jù)庫(kù)空間,索引越多,Insert、Update和Delete語(yǔ)句的執(zhí)行就越慢,因?yàn)橐瑫r(shí)修改索引。如果表中列的值占該表中行的20%以內(nèi),這個(gè)表列就可以作為候選索引表列。對(duì)下列情況不應(yīng)該創(chuàng)建索引:在經(jīng)常用在連接的列上創(chuàng)建索引,也就是在外鍵上面創(chuàng)建索引。在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,其指定的范圍是連續(xù)的。在經(jīng)常需要查詢、排序(如使用Group或Order排序)的列上創(chuàng)建索引。在經(jīng)常使用在WHERE子句中的列上面創(chuàng)建索引。如果在SQL語(yǔ)句謂詞中多個(gè)表列被一起連續(xù)使用,則應(yīng)該考慮將這些表列一起放在一個(gè)索引內(nèi)創(chuàng)建復(fù)合索引,同時(shí)應(yīng)把最常用到的字段作為前導(dǎo)列(即第一列),并把要引用到字段都包含到復(fù)合索引中,這樣可利用優(yōu)化程序的索引覆蓋功能。同時(shí),對(duì)下列情況不應(yīng)該創(chuàng)建索引:不要對(duì)那些必須經(jīng)常修改的列做索引,并設(shè)法抑制對(duì)具有高插入與刪除操作的表中的任何列做索引。不要對(duì)那些總是用于具有函數(shù)或操作符(MIN與MAX操作除外)的WHERE子句中的列做索引。在這種情況下,優(yōu)化程序不使用索引。不要對(duì)那些主要用于否定或NULL比較的列做索引。Oracle優(yōu)化程序不使用WHERE子句中基于如下比較操作的索引:ISNULL、ISNOTNULL和!=。不要對(duì)那些只有很少值的列增加索引。ALTER SESSION SET SORT_AREA_SIZE根據(jù)索引的類型與where限制條件的不同,有4種類型的索引掃描:索引唯一掃描(index unique scan)索引范圍掃描(index range scan)索引全掃描(index full scan)索引快速掃描(index fast full scan)[B](1) 索引唯一掃描(index unique scan)通過(guò)唯一索引查找一個(gè)數(shù)值經(jīng)常返回單個(gè)ROWID。如果該唯一索引有多個(gè)列組成(即組合索引),則至少要有組合索引的引導(dǎo)列參與到該查詢中,如創(chuàng)建一個(gè)索引:create index idx_test on emp(ename, deptno, loc)。則select ename from emp where ename = ‘JACK’ and deptno = ‘DEV’語(yǔ)句可以使用該索引。如果該語(yǔ)句只返回一行,則存取方法稱為索引唯一掃描。而select e
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1