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

正文內(nèi)容

oracle原理學習筆記-資料下載頁

2025-06-29 07:38本頁面
  

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