日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

oracle筆記整理9——性能調(diào)優(yōu)之索引、表分區(qū)、索引分區(qū)

 堂tj77m7tpne37 2018-07-17

1. 索引

1) 需要建索引的列

a) where從句中頻繁使用的關(guān)鍵字。
b) sql語句中頻繁用于表連接的字段。
c) 可選擇性高(重復(fù)值少)的字段。

2) 索引限制條件

a) where條件中索引列上使用了否定操作符(比如:<>,!=,is null,is (not) null),將不會(huì)使用索引,直接全表掃描,此時(shí)可以把部分否定操作符換成or形式或者union all的形式來執(zhí)行。
or與in等效,or關(guān)鍵字是否使用索引,視情況而定。

b) 索引列上使用了函數(shù)或運(yùn)算操作,則不會(huì)使用索引,轉(zhuǎn)而全表掃描,但可以建立相應(yīng)的函數(shù)索引來實(shí)現(xiàn)。

c) like索引列時(shí),通配符出現(xiàn)在詞首時(shí)不會(huì)使用索引,其他位置將使用。

d) 索引列與給定變量的類型不一致時(shí),將不會(huì)使用索引(oracle 11g中,可以進(jìn)行varchar2至number的自動(dòng)轉(zhuǎn)換,此種情況索引正常使用,反之則沒有,故盡量保持類型一致,不要寄希望于oracle的自動(dòng)轉(zhuǎn)換,否則容易搞混淆)

e) 頻繁修改的列上最好不要建立索引,維護(hù)索引的開銷太大。

3) 組合索引

由多個(gè)列構(gòu)成的索引。
如:create index idx_tmp on temp(col1,col2,col3,……)
引導(dǎo)列(leading column):col1列為引導(dǎo)列;
限制條件中包含先導(dǎo)列時(shí),該限制條件才會(huì)使用該組合索引。因此組合索引中應(yīng)該按照列的使用頻繁程度從高到底排列。

4) 并行索引

a) 快速創(chuàng)建并行索引

create index idx on table_name(id) parallel 4
  • 1

b) 取消并行索引
服務(wù)器資源緊張時(shí),并行索引會(huì)引起更嚴(yán)重的資源爭(zhēng)用,需要把并行度改回來。

alter index idx noparallel;
  • 1

5) 監(jiān)視索引使用情況

a) alter index index_name monitoring usage;

b) select * from V$OBJECT_USAGE;

c) 刪除那些不被使用的索引,否則將阻礙性能 。

6) 索引的本質(zhì)

oracle一般使用平衡二叉樹(B—tree)來存儲(chǔ)索引,在一個(gè)平衡樹索引(B-tree index)中,最底層的索引塊(葉塊(leaf block))存儲(chǔ)了被索引的數(shù)據(jù)值,以及對(duì)應(yīng)的 rowid。葉塊之間以雙向鏈表的形式相互連接。位于葉塊之上的索引塊被稱為分支塊,分枝塊中包含了指向下層索引塊的指針。

2. 表分區(qū)

1) 原理

:分區(qū)表通過對(duì)分區(qū)列的判斷,把分區(qū)列不同的記錄,放到不同的分區(qū)中。

2) 優(yōu)勢(shì)


a) 增強(qiáng)可用性:如果表的一個(gè)分區(qū)發(fā)生故障,其余的分區(qū)仍可以使用。
b) 均衡I/O:通過把表的不同分區(qū)分配到不同的磁盤來平衡I/O 改善性能,從10g開始o(jì)racle提供ASM存儲(chǔ)管理模式自動(dòng)均衡I/O.
c) 提高查詢速度:對(duì)大表的增刪改查分解到不同的分區(qū)來并行執(zhí)行。

3) 分類

:range、hash、list、組合分區(qū)

4) range:范圍分區(qū)

Range分區(qū)是應(yīng)用范圍比較廣的表分區(qū)方式,它是以列的值的范圍來做為分區(qū)的劃分條件,將記錄存放到列值所在的range分區(qū)中。當(dāng)數(shù)據(jù)在范圍內(nèi)均勻分布時(shí),性能最好。如按照時(shí)間劃分。如果某些記錄暫無法預(yù)測(cè)范圍,可以創(chuàng)建maxvalue分區(qū),所有不在指定范圍內(nèi)的記錄都會(huì)被存儲(chǔ)到maxvalue所在分區(qū)中。

5) hash:哈希分區(qū)

hash分區(qū)是在列的取值難以確定的情況下,會(huì)將表中的數(shù)據(jù)平均分配到你指定的幾個(gè)分區(qū)中,列所在分區(qū)是依據(jù)分區(qū)列的hash值自動(dòng)分配。

6) list:列表分區(qū)

List分區(qū)也需要指定列的值,其分區(qū)值必須明確指定(即該列值是可以枚舉的),通常建議使用要?jiǎng)?chuàng)建一個(gè)default分區(qū)存儲(chǔ)那些不在明確值范圍內(nèi)的記錄

7) 組合分區(qū):

如果某表按照某列分區(qū)之后,仍然較大,或者是一些其它的需求,還可以通過分區(qū)內(nèi)再建子分區(qū)的方式將分區(qū)再分區(qū),即組合分區(qū)的方式。

8) 聯(lián)機(jī)重定義

普通表轉(zhuǎn)換分區(qū)表,可以通過聯(lián)機(jī)重定義方法來實(shí)現(xiàn)。

3. 索引分區(qū)

1) 概念

對(duì)大數(shù)據(jù)量的索引進(jìn)行分區(qū)同樣能夠優(yōu)化應(yīng)用系統(tǒng)的性能。oracle索引分區(qū)分為局部/本地索引分區(qū)和全局索引分區(qū)。

2) 局部索引分區(qū)

局部索引分區(qū)反應(yīng)基礎(chǔ)表的表結(jié)構(gòu),使用和分區(qū)表同樣的分區(qū)字段來進(jìn)行索引分區(qū)。獨(dú)立性強(qiáng) ,可以單獨(dú)重建,如果只有一個(gè)分區(qū)需要維護(hù),則只有一個(gè)本地索引受影響。

3) 全局索引分區(qū)

全局索引分區(qū)不反應(yīng)基礎(chǔ)表的表結(jié)構(gòu),使用的字段與分區(qū)表的分區(qū)字段不同,可以保證所有分區(qū)中的記錄的唯一性。無論表是否分區(qū),都可以進(jìn)行全局索引分區(qū)。

4) 局部索引

建立在表分區(qū)的基礎(chǔ)上,每一個(gè)表分區(qū)對(duì)應(yīng)一個(gè)索引段,索引列與表分區(qū)列無關(guān)。局部索引之間相互獨(dú)立。

5) 全局索引

普通表或者跨表分區(qū)的索引,可以實(shí)現(xiàn)所有分區(qū)中記錄的唯一性。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多