時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
在OLAP環(huán)境,以利用多的CPU和內(nèi)存資源來(lái)加速處理數(shù)據(jù),也即oracle的并行查詢。單個(gè)CPU同一時(shí)刻只能服務(wù)一個(gè)進(jìn)程,如果有多個(gè)CPU,提高CPU利用律,就可以同時(shí)運(yùn)行多個(gè)進(jìn)程。也就是原來(lái)單個(gè)進(jìn)程處理的變成多個(gè)進(jìn)程并行處理加速執(zhí)行時(shí)間。并行執(zhí)行只是在全表處理或者分區(qū)及在分區(qū)表中執(zhí)行本地索引時(shí)用到。下面情況會(huì)用到并行查詢:
全表掃描、 rebuild index、update (全表或分區(qū)表)、insert的并行子查詢、本地索引使用、批量插入,象SQLLDR、創(chuàng)建臨時(shí)表
比如我們執(zhí)行
select /*+ parallel(c1 ,2) */
...
from customers c1
order by ...process a process b
fetch rows from fetch rows from
customers customers
|| ||
|| ||
^^ ^^
process c process d
sort rows(a-k) sort rows(l-z)
combine rows
||
return result set
這里我們看到這個(gè)進(jìn)程分散成4個(gè)進(jìn)程,排序中各負(fù)責(zé)a-k和l-z,這樣就可以并行處理
我們?cè)诜謪^(qū)表中,也可以用一個(gè)并行從進(jìn)程對(duì)應(yīng)一個(gè)分區(qū)表如果你的并行度是3,那么你可能就比普通的執(zhí)行速度提高3倍
注意在單CPU下,如果使用并行,那么就可能造成性能下降,而且也要設(shè)置合適的并行度
并行適合對(duì)于長(zhǎng)時(shí)間運(yùn)行的語(yǔ)句
在oltp可能并不適合使用并行處理,因?yàn)槭聞?wù)并發(fā)比較多,每個(gè)用戶都要使用CPU,CPU的負(fù)載本來(lái)就比較高
所以并行處理還是比較適合olap中的批量導(dǎo)入,sqlldr,mis report和oltp中rebuild index。
看看并行選件是否安裝
Select * FROM V$OPTION
where parameter like 'Parallel%';
看看
Parallel execution是不是TRUE
如果是TRUE,執(zhí)行語(yǔ)句后查看
select * from V$pq_sesstat;
where name like '%Parallelized';
如果Queries Parallelized>>0就說(shuō)明是執(zhí)行了并行
可以強(qiáng)制使用PARALLEL,和CPU數(shù)量無(wú)關(guān),不過(guò)在單個(gè)CPU下使用并行沒(méi)有什么好處
alter session force parallel query;
可以強(qiáng)制將某表執(zhí)行全表掃描時(shí)使用并行查詢
alter table tablename parallel 7;
關(guān)鍵詞標(biāo)簽:oracle
相關(guān)閱讀
熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法