日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据分片排序oracle,Oracle数据库的优化

發(fā)布時間:2025/3/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分片排序oracle,Oracle数据库的优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要 本文提出了一種優(yōu)化Oracle數(shù)據(jù)庫的方法。Oracle中SQL語句的執(zhí)行過程可分為解析(Parse)、執(zhí)行(Execute)和提取結(jié)果(Fetch)三步,此方法就是通過對SQL語句在Oracle數(shù)據(jù)庫中優(yōu)化執(zhí)行的三個過程來提高Oracle數(shù)據(jù)庫的性能。

關(guān)鍵詞 數(shù)據(jù)庫 掃描 多表聯(lián)結(jié) 子查詢

1 如何優(yōu)化Parse

1. 1 SQL語句的Parse處理步驟:

1) 計算語句值

2) 共享池中有無與此語句值相同的語句?

3) 共享池中有與此語句字符完全匹配的語句?

4) 準(zhǔn)備要運行的SQL語句

5) 為新語句在共享池中創(chuàng)建空間

6) 將語句存放在共享池中

7) 修改共享池圖,標(biāo)明語句的值和在共享池中的位置

8) 執(zhí)行準(zhǔn)備好的SQL語句

最理想的是,語句只執(zhí)行1、2、3和8步來進行處理。不經(jīng)過2、3步來測試被傳給Oracle的語句要使用1~8步進行處理。只經(jīng)過1、2、3、8的SQL語句要比經(jīng)過1~8步的語句更為有效。

1.2 在共享池中重用SQL語句

當(dāng)SQL語句被傳遞給Oracle處理時,其秘訣是重復(fù)使用已經(jīng)在共享池中的語句,而不是讓Oracle在接受語句時去準(zhǔn)備新的語句。前面表明,如果Oracle接受了一個與共享池中的語句相一致的語句,就重用共享池中的語句。

Oracle提供在數(shù)據(jù)庫中存儲代碼的能力。當(dāng)應(yīng)用系統(tǒng)開始運行時,從數(shù)據(jù)庫中讀取代碼(可用PL/SQL語句編制)并像其它語句那樣傳遞到共享池中去處理。從數(shù)據(jù)庫中取出的代碼是編譯過的并駐留在共享池中。

可以利用數(shù)據(jù)庫中存儲的程序代碼設(shè)計應(yīng)用系統(tǒng),檢查所有的事務(wù)處理以及主要的通用的過程,研究現(xiàn)有的應(yīng)用系統(tǒng)并把主要的處理程序轉(zhuǎn)換為數(shù)據(jù)庫中存儲的程序代碼。在Oracle中存儲代碼可以通過過程、程序包、函數(shù)、觸發(fā)器等來實現(xiàn)。

2 如何優(yōu)化Execute和Fetch

2.1 避免無計劃的全表掃描

全表掃描連續(xù)從表讀取所有數(shù)據(jù),而不管數(shù)據(jù)是否與查詢有關(guān)。避免不必要的全表掃描有兩個充足理由:1)全表掃描沒有選擇性

2) 過全表掃描讀取的數(shù)據(jù)很快從SGA的緩沖區(qū)移走(如果正在掃描的表不是“高速存儲”的表)

在基于規(guī)則優(yōu)化的情況下,如果下列任何條件在SGA語句出現(xiàn),就要對一個表進行全表掃描。

1) 該表無索引

2) 對返回的行無任何限定條件(如無Where語句)

3) 對數(shù)據(jù)表與任何索引主列相對應(yīng)的行無限定條件。例如,在City-State-Zip列上創(chuàng)建了三列復(fù)合索引,那么僅對State列有限定條件的查詢不能使用這個索引,因為State不是索引的主列。

4) 對索引主列的行有限定條件,但條件或者是NULL或者是不相等。例如,City列上存在索引,在所有下列情況下都不會使用索引。

Where city is null

Where city is not null

Where city!=’liaoning’

5) 對索引主列的行有限定條件,但條件在表達式里使用。例如,如果在City列上索引,那么限定條件

Where City=’liaoning’

可以使用索引。然而,如果限定條件是

Where UPPER(City)=’liaoning’

那么不會使用City列上的索引,因為City列在UPPER函數(shù)里。如果將City列與文本字符串聯(lián)結(jié)在一起,也不會使用索引。例如,如果限定條件是

Where City||’x’ like ‘liaoning%’

那么不會使用City列上的索引。

6) 對索引主列的行有限定條件,但條件使用Like操作以及值以‘%’開始或者值是一個賦值變量。例如,在所有下列情況下都不會使用索引:

Where City like ‘%aonin%’

Where City like :City_Bind_Variable

如果表小、索引列無選擇性,基于開銷的優(yōu)化器可能決定使用全表掃描。

2.2只使用選擇性索引

索引的選擇性是指索引列里不同值的數(shù)目與表中記錄數(shù)的比。如果表有1000個記錄,表索引列有950個不同值,那么這個索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據(jù)非空值列的唯一索引,通常其選擇性為1.0。

如果使用基于開銷的最優(yōu)化,優(yōu)化器不應(yīng)該使用選擇性不好的索引。

索引的選擇性是指索引列里不同值的數(shù)目與表中記錄數(shù)的比。如果表有1000個記錄,表索引列有950個不同值,那么這個索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據(jù)非空值列的唯一索引,通常其選擇性為1.0。

索引的選擇性是指索引列里不同值的數(shù)目與表中記錄數(shù)的比。如果表有1000個記錄,表索引列有950個不同值,那么這個索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據(jù)非空值列的唯一索引,通常其選擇性為1.0。

2.3管理多表聯(lián)結(jié)

Oracle提供了3個聯(lián)結(jié)操作:NESTED LOOPS、HASH JOIN和MERGE JOIN。MERGE JOIN是一組操作,在所有行被處理完之前,它不返任何記錄給下一操作。NESTED LOOPS和HASH是行操作,因此會很快將第一批記錄返回給下一個操作。

在每個聯(lián)結(jié)選項里,必須執(zhí)行一些步驟以獲取最好的聯(lián)結(jié)性能。如果沒有適當(dāng)?shù)貎?yōu)化聯(lián)結(jié)操作,那么聯(lián)結(jié)所需的時間也許隨著表的增長而呈指數(shù)級地增長。

2.4管理包含視圖的SQL語句

如果查詢包含視圖,優(yōu)化器有兩種執(zhí)行查詢的方法:首先解決視圖然后執(zhí)行查詢,或者把視圖文本集成到查詢里去。如果首先執(zhí)行視圖,那么首先完成全部的結(jié)果集,然后用其余的查詢條件做過濾器。

首先解決視圖會導(dǎo)致查詢性能下降的問題,這取決于所涉及表的相對大小。如果視圖被集成到查詢里,那么查詢的條件也可以應(yīng)用于視圖里,并且可以使用一個小一些的結(jié)果集。然而在一些情況下,也許可以通過視圖分離組操作提高查詢性能。

如果一個視圖包含集合的操作(如Group by、SUM、COUNT或者DISTINCT),那么視圖不能被集成到查詢里去。

不使用組或者沒有集合操作的視圖的SQL語法可以被集成到大的查詢里去。

2.5優(yōu)化子查詢

當(dāng)使用自查詢時,也許會碰到幾個獨特的問題。涉及子查詢的查詢潛在問題如下:

? 也許在執(zhí)行完查詢的剩余部分前執(zhí)行子查詢(與執(zhí)行分組功能的視圖相似)。

? 子查詢也許要求特定的提示,但這些提示不直接與調(diào)用該子查詢的查詢有關(guān)

? 可以作為單個查詢執(zhí)行的子查詢也許被代替寫成幾個不同的子查詢。

? 也許在使用not in子句或者not exists子句時,不能在最有效的方式下進行子查詢的存在查詢。

1)當(dāng)執(zhí)行子查詢時

如果一個查詢包含子查詢,那么優(yōu)化器有兩種完成查詢的方法:首先完成子查詢,然后完成查詢(“視圖的方法”),或者將子查詢集成到查詢里去(“聯(lián)結(jié)”的方法)。如果首先解決子查詢,那么整個子查詢的結(jié)果集將首先被計算,并且用查詢條件的剩余部分做過濾器。如果沒有使用子查詢?nèi)ミM行存在檢查,那么“聯(lián)結(jié)”方法將通常要比“視圖”方法完成得好。

如果一個子查詢包括集合操作,如group by,SUM或者DISTINCT,那么不能集成子查詢到查詢的其余部分里去。非集成的子查詢限制了提供給優(yōu)化器的選項。

2)如何組合子查詢

一個查詢可以包含多個子查詢,使用的子查詢越多,集成或者重寫它們到大的聯(lián)結(jié)里就越困難。既然有多個子查詢使集成困難,就應(yīng)該盡可能地組合多個子查詢。

3)怎樣進行存在檢查

有時子查詢不返回行(記錄),但可以進行數(shù)據(jù)正確性檢查。在相關(guān)表里的記錄或者存在或者不存在的邏輯檢查,稱為存在檢查??梢允褂胑xists和not exists子句提高存在檢查的性能。

2.6管理對非常巨大的表的訪問

隨著表增長到比SGA的數(shù)據(jù)塊高速緩沖區(qū)存儲器的空間顯著大時,需要從另一個角度優(yōu)化對這個表的查詢。

1)問題

當(dāng)表和它的索引小的時候,在SGA里可以有高度的數(shù)據(jù)共享。多用戶讀表或索引范圍掃描可以反復(fù)使用同一個塊。隨著表的增長,表的索引也在增長。隨著表和它的索引增長到比SGA里提供的空間大時,范圍掃描需要的下一行將在SGA里找到的可能性變小,數(shù)據(jù)庫的命中率將減小。最后,每一個邏輯讀將要求一個單獨的物理讀。對使用非常大的表的優(yōu)化方法著眼于特別的索引技術(shù)和有關(guān)索引的選擇。

2)管理數(shù)據(jù)接近

在訪問非常大的表期間,如果傾向于繼續(xù)使用索引,那么應(yīng)該關(guān)注數(shù)據(jù)接近,即邏輯相關(guān)記錄的物理關(guān)系。為了使數(shù)據(jù)最大限度地接近,應(yīng)該連續(xù)往表里插入記錄。記錄按通常在表的范圍掃描里使用的列排序。

3)避免沒有幫助的索引掃描

如果要對大表使用索引掃描,那么不能假定索引掃描將比全表掃描執(zhí)行得更好。不緊跟表訪問的索引唯一掃描或范圍掃描執(zhí)行得比較好,但緊跟通過RowID的表訪問的索引范圍掃描也許執(zhí)行得差。隨著表增長到比數(shù)據(jù)塊高速緩沖存儲器大得多,最終,索引掃描和全表掃描間的平衡點打破。

4)創(chuàng)建充分索引的表

如果表中的數(shù)據(jù)相當(dāng)穩(wěn)定,充分索引一個表是很有用的。創(chuàng)建一個復(fù)合索引,它包括所有在查詢期間通常選擇的列。在查詢期間,查詢要求的所有數(shù)據(jù)可以通過索引訪問提供,不需要任何表訪問。

5)并行選項

可以把一個數(shù)據(jù)庫任務(wù),比如Select語句,分為多個單元的工作,由多個Oracle進程同時執(zhí)行。這種能夠允許數(shù)據(jù)庫的單個查詢活動由多個協(xié)調(diào)的進程透明地進行處理的能力,稱為并行查詢選項(PQO)。

并行選項調(diào)用多個進程來利用空閑的系統(tǒng)資源,以減少完成任務(wù)所需要的時間。并行選項并不減少處理過程所要求的資源數(shù)量,而是把處理的任務(wù)分散給多個CPU。為了從并行選項中得到最大的好處,應(yīng)該使CPU和磁盤上的I/O不要滿負(fù)荷使用。因為并行的目的是使更多的CPU和磁盤同時參與處理數(shù)據(jù)庫的命令,一個缺乏CPU和I/O資源的服務(wù)程序是不能從并行選項中得到好處的。

2.7使用UNION ALL而不是UNION

最常用的集操作是UNION操作,UNION操作使多個記錄集聯(lián)結(jié)成為單個集。UNION操作的數(shù)學(xué)定義是返回記錄的單個集并且沒有重復(fù)的行,所以在合并結(jié)果集里,Orac

總結(jié)

以上是生活随笔為你收集整理的数据分片排序oracle,Oracle数据库的优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人a网站 | 97国产精品久久 | 风流少妇一区二区三区91 | 波波野结衣 | 欧美色图第一页 | 精品久久久久久久久久岛国gif | 韩国bj大尺度vip福利网站 | 天天干天天爽天天射 | 欧美国产日韩一区二区 | 六月婷婷在线观看 | 日日操夜夜操视频 | 嫩草视频免费观看 | 日韩免费视频一区 | 污污视频在线观看网站 | 国产精品久久久久久久久动漫 | 国产精品日韩一区二区三区 | 国产毛片一区二区三区 | 国产日韩精品一区 | 91人人看 | 国产东北露脸精品视频 | eeuss一区| 天堂va蜜桃一区 | 成人在线观看一区二区三区 | 九一亚色 | 91精品国产自产精品男人的天堂 | 黄色免费视频观看 | av大全在线 | 亚洲欧美在线播放 | 岛国精品在线播放 | 俄罗斯丰满熟妇hd | 日韩在线视频网址 | 动漫美女被到爽 | 三级性生活片 | 91一区二区视频 | 午夜激情视频 | 香港三级在线视频 | 国产一区二区三区黄 | 激情毛片视频 | 中文字幕 国产精品 | 精品久久国产视频 | 越南性xxxx精品hd | 亚洲福利网 | 国产a视频精品免费观看 | 黑人操亚洲女人 | 狠狠爱综合网 | 小泽玛利亚在线 | 美女黄18以下禁止观看 | 亚洲一区在线电影 | 久久人人爽爽 | 天天操天天操天天操天天 | 日韩欧美精品在线视频 | 日本在线不卡一区二区 | 成年在线观看视频 | 久久精品视频一区二区三区 | 中文字幕精品亚洲 | 97久久人国产精品婷婷 | 国产一区二区视频免费在线观看 | xx69欧美 | 女人舌吻男人茎视频 | 欧美日韩中文国产一区发布 | 精品无码久久久久久久久久 | 亚洲欧美一区二区三区孕妇 | 超碰人人人人人 | 穿越异世荒淫h啪肉np文 | 亚洲一区二区三区在线 | 欧美视频亚洲视频 | 成人导航网站 | 少妇被中出 | 蜜桃视频在线观看一区二区 | 亚洲黄色成人网 | 国产亚洲二区 | 日本一级黄色录像 | 爱射综合 | 欧美aⅴ视频 | 精品人伦一区二区三电影 | 国产精品第56页 | 成人动漫亚洲 | 欧美激情精品久久 | 欧美黄色性视频 | 午夜视频在线观看网站 | 成人人伦一区二区三区 | 国产 欧美 日韩 | 国产一精品一aⅴ一免费 | 中文字幕免费一区 | 国产高清视频免费观看 | 伊人久久久久久久久久久 | 视频在线免费观看 | 91精产国品一二三区在线观看 | 精品午夜一区二区三区在线观看 | 伊人情人综合 | 高清视频一区二区三区 | 九九在线观看高清免费 | 99视频热| 污污的网站在线观看 | 成年女人18级毛片毛片免费 | 熟女性饥渴一区二区三区 | 亚洲成人高清 | 中文字幕人成人乱码亚洲电影 | 91亚洲国产成人久久精品网站 |