中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

oracle怎么查看速度 oracle 查看磁盤讀寫速度

oracle中關(guān)于查詢速度

不會的,查詢view相當(dāng)于重新執(zhí)行創(chuàng)建view的語句,和直接拿語句查詢沒有區(qū)別的。兩者沒有任何差別。

創(chuàng)新互聯(lián)公司憑借專業(yè)的設(shè)計團隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都上千家中小型企業(yè)策劃設(shè)計了網(wǎng)站。

如果你每次查詢的結(jié)果,只占整張表的1%-5%左右(這個沒有準(zhǔn)確的說法,完全是根據(jù)經(jīng)驗),那么你可以在你使用的條件字段上創(chuàng)建索引。如果大于這個比例,那么還是不要建索引全表掃描吧,建了索引反而會更慢。

如果你用的是oracle 10g,你可以建索引在上面先,如果效率沒提高就把索引刪掉。

如何提高oracle的查詢速度

幾個簡單的步驟大幅提高Oracle性能--我優(yōu)化數(shù)據(jù)庫的三板斧。

數(shù)據(jù)庫優(yōu)化的討論可以說是一個永恒的主題。資深的Oracle優(yōu)化人員通常會要求提出性能問題的人對數(shù)據(jù)庫做一個statspack,貼出數(shù)據(jù)庫配置等等。還有的人認(rèn)為要抓出執(zhí)行最慢的語句來進行優(yōu)化。但實際情況是,提出疑問的人很可能根本不懂執(zhí)行計劃,更不要說statspack了。而我認(rèn)為,數(shù)據(jù)庫優(yōu)化,應(yīng)該首先從大的方面考慮:網(wǎng)絡(luò)、服務(wù)器硬件配置、操作系統(tǒng)配置、Oracle服務(wù)器配置、數(shù)據(jù)結(jié)構(gòu)組織、然后才是具體的調(diào)整。實際上網(wǎng)絡(luò)、硬件等往往無法決定更換,應(yīng)用程序一般也無法修改,因此應(yīng)該著重從數(shù)據(jù)庫配置、數(shù)據(jù)結(jié)構(gòu)上來下手,首先讓數(shù)據(jù)庫有一個良好的配置,然后再考慮具體優(yōu)化某些過慢的語句。我在給我的用戶系統(tǒng)進行優(yōu)化的過程中,總結(jié)了一些基本的,簡單易行的辦法來優(yōu)化數(shù)據(jù)庫,算是我的三板斧,呵呵。不過請注意,這些不一定普遍使用,甚至有的會有副作用,但是對OLTP系統(tǒng)、基于成本的數(shù)據(jù)庫往往行之有效,不妨試試。(注:附件是Burleson寫的用來報告數(shù)據(jù)庫性能等信息的腳本,本文用到)

一.設(shè)置合適的SGA

常常有人抱怨服務(wù)器硬件很好,但是Oracle就是很慢。很可能是內(nèi)存分配不合理造成的。(1)假設(shè)內(nèi)存有512M,這通常是小型應(yīng)用。建議Oracle的SGA大約240M,其中:共享池(SHARED_POOL_SIZE)可以設(shè)置60M到80M,根據(jù)實際的用戶數(shù)、查詢等來定。數(shù)據(jù)塊緩沖區(qū)可以大致分配120M-150M,8i下需要設(shè)置DB_BLOCK_BUFFERS,DB_BLOCK_BUFFER*DB_BLOCK_SIZE等于數(shù)據(jù)塊緩沖區(qū)大小。9i 下的數(shù)據(jù)緩沖區(qū)可以用db_cache_size來直接分配。

(2)假設(shè)內(nèi)存有1G,Oracle 的SGA可以考慮分配500M:共享池分配100M到150M,數(shù)據(jù)緩沖區(qū)分配300M到400M。

(3)內(nèi)存2G,SGA可以考慮分配1.2G,共享池300M到500M,剩下的給數(shù)據(jù)塊緩沖區(qū)。

(4)內(nèi)存2G以上:共享池300M到500M就足夠啦,再多也沒有太大幫助;(Biti_rainy有專述)數(shù)據(jù)緩沖區(qū)是盡可能的大,但是一定要注意兩個問題:一是要給操作系統(tǒng)和其他應(yīng)用留夠內(nèi)存,二是對于32位的操作系統(tǒng),Oracle的SGA有1.75G的限制。有的32位操作系統(tǒng)上可以突破這個限制,方法還請看Biti的大作吧。

二.分析表和索引,更改優(yōu)化模式

Oracle默認(rèn)優(yōu)化模式是CHOOSE,在這種情況下,如果表沒有經(jīng)過分析,經(jīng)常導(dǎo)致查詢使用全表掃描,而不使用索引。這通常導(dǎo)致磁盤I/O太多,而導(dǎo)致查詢很慢。如果沒有使用執(zhí)行計劃穩(wěn)定性,則應(yīng)該把表和索引都分析一下,這樣可能直接會使查詢速度大幅提升。分析表命令可以用ANALYZE TABLE 分析索引可以用ANALYZE INDEX命令。對于少于100萬的表,可以考慮分析整個表,對于很大的表,可以按百分比來分析,但是百分比不能過低,否則生成的統(tǒng)計信息可能不準(zhǔn)確。可以通過DBA_TABLES的LAST_ANALYZED列來查看表是否經(jīng)過分析或分析時間,索引可以通過DBA_INDEXES的LAST_ANALYZED列。

下面通過例子來說明分析前后的速度對比。(表CASE_GA_AJZLZ大約有35萬數(shù)據(jù),有主鍵)首先在SQLPLUS中打開自動查詢執(zhí)行計劃功能。(第一次要執(zhí)行\(zhòng)RDBMS\ADMIN\utlxplan.sql來創(chuàng)建PLAN_TABLE這個表)

SQL SET AUTOTRACE ON

SQLSET TIMING ON

通過SET AUTOTRACE ON 來查看語句的執(zhí)行計劃,通過SET TIMING ON 來查看語句運行時間。

SQL seleCT count(*) from CASE_GA_AJZLZ;

COUNT(*)

----------

346639

已用時間: 00: 00: 21.38

Execution Plan

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 SORT (AGGREGATE)

2 1 TABLE ACCESS (FULL) OF 'CASE_GA_AJZLZ'

……………………

請注意上面分析中的TABLE ACCESS(FULL),這說明該語句執(zhí)行了全表掃描。而且查詢使用了21.38秒。這時表還沒有經(jīng)過分析。下面我們來對該表進行分析:

SQL analyze table CASE_GA_AJZLZ compute statistics;

表已分析。已用時間: 00: 05: 357.63。然后再來查詢:

SQL select count(*) from CASE_GA_AJZLZ;

COUNT(*)

----------

346639

已用時間: 00: 00: 00.71

Execution Plan

0 SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=351 Card=1)

1 0 SORT (AGGREGATE)

2 1 INDEX (FAST FULL SCAN) OF 'PK_AJZLZ' (UNIQUE) (Cost=351

Card=346351)

…………………………

請注意,這次時間僅僅用了0.71秒!這要歸功于INDEX(FAST FULL SCAN)。通過分析表,查詢使用了PK_AJZLZ索引,磁盤I/O大幅減少,速度也大幅提升!下面的實用語句可以用來生成分析某個用戶的所有表和索引,假設(shè)用戶是GAXZUSR:

SQL set pagesize 0

SQL spool d:\analyze_tables.sql;

SQL select 'analyze table '||owner||'.'||table_name||'

compute statistics;' from dba_tables where owner='GAXZUSR';

SQL spool off

SQL spool spool d:\analyze_indexes.sql;

SQL select 'analyze index '||owner||'.'||index_name||'

compute statistics;' from dba_indexes where owner='GAXZUSR';

SQL spool off

SQL @d:\analyze_tables.sql

SQL @d:\analyze_indexes.sql

解釋:上面的語句生成了兩個sql文件,分別分析全部的GAXZUSR的表和索引。如果需要按照百分比來分析表,可以修改一下腳本。通過上面的步驟,我們就完成了對表和索引的分析,可以測試一下速度的改進啦。建議定期運行上面的語句,尤其是數(shù)據(jù)經(jīng)過大量更新。

當(dāng)然,也可以通過dbms_stats來分析表和索引,更方便一些。但是我仍然習(xí)慣上面的方法,因為成功與否會直接提示出來。

另外,我們可以將優(yōu)化模式進行修改。optimizer_mode值可以是RULE、CHOOSE、FIRST_ROWS和ALL_ROWS。對于OLTP系統(tǒng),可以改成FIRST_ROWS,來要求查詢盡快返回結(jié)果。這樣即使不用分析,在一般情況下也可以提高查詢性能。但是表和索引經(jīng)過分析后有助于找到最合適的執(zhí)行計劃。

三.設(shè)置cursor_sharing=FORCE 或SIMILAR

這種方法是8i才開始有的,oracle805不支持。通過設(shè)置該參數(shù),可以強制共享只有文字不同的語句解釋計劃。例如下面兩條語句可以共享:

SQL SELECT * FROM MYTABLE WHERE NAME='tom'

SQL SELECT * FROM MYTABLE WHERE NAME='turner'

這個方法可以大幅降低緩沖區(qū)利用率低的問題,避免語句重新解釋。通過這個功能,可以很大程度上解決硬解析帶來的性能下降的問題。個人感覺可根據(jù)系統(tǒng)的實際情況,決定是否將該參數(shù)改成FORCE。該參數(shù)默認(rèn)是exact。不過一定要注意,修改之前,必須先給ORACLE打補丁,否則改之后oracle會占用100%的CPU,無法使用。對于ORACLE9i,可以設(shè)置成SIMILAR,這個設(shè)置綜合了FORCE和EXACT的優(yōu)點。不過請慎用這個功能,這個參數(shù)也可能帶來很大的負(fù)面影響!

四.將常用的小表、索引釘在數(shù)據(jù)緩存KEEP池中

內(nèi)存上數(shù)據(jù)讀取速度遠(yuǎn)遠(yuǎn)比硬盤中讀取要快,據(jù)稱,內(nèi)存中數(shù)據(jù)讀的速度是硬盤的14000倍!如果資源比較豐富,把常用的小的、而且經(jīng)常進行全表掃描的表給釘內(nèi)存中,當(dāng)然是在好不過了??梢院唵蔚耐ㄟ^ALTER TABLE tablename CACHE來實現(xiàn),在ORACLE8i之后可以使用ALTER TABLE table STORAGE(BUFFER_POOL KEEP)。一般來說,可以考慮把200數(shù)據(jù)塊之內(nèi)的表放在keep池中,當(dāng)然要根據(jù)內(nèi)存大小等因素來定。關(guān)于如何查出那些表或索引符合條件,可以使用本文提供的access.sql和access_report.sql。這兩個腳本是著名的Oracle專家 Burleson寫的,你也可以在讀懂了情況下根據(jù)實際情況調(diào)整一下腳本。對于索引,可以通過ALTER INDEX indexname STORAGE(BUFFER_POOL KEEP)來釘在KEEP池中。

將表定在KEEP池中需要做一些準(zhǔn)備工作。對于ORACLE9i 需要設(shè)置DB_KEEP_CACHE_SIZE,對于8i,需要設(shè)置buffer_pool_keep。在8i中,還要修改db_block_lru_latches,該參數(shù)默認(rèn)是1,無法使用buffer_pool_keep。該參數(shù)應(yīng)該比2*3*CPU數(shù)量少,但是要大于1,才能設(shè)置DB_KEEP_CACHE_BUFFER。buffer_pool_keep從db_block_buffers中分配,因此也要小于db_block_buffers。設(shè)置好這些參數(shù)后,就可以把常用對象永久釘在內(nèi)存里。

五.設(shè)置optimizer_max_permutations

對于多表連接查詢,如果采用基于成本優(yōu)化(CBO),ORACLE會計算出很多種運行方案,從中選擇出最優(yōu)方案。這個參數(shù)就是設(shè)置oracle究竟從多少種方案來選擇最優(yōu)。如果設(shè)置太大,那么計算最優(yōu)方案過程也是時間比較長的。Oracle805和8i默認(rèn)是80000,8建議改成2000。對于9i,已經(jīng)默認(rèn)是2000了。

六.調(diào)整排序參數(shù)

(1) SORT_AREA_SIZE:默認(rèn)的用來排序的SORT_AREA_SIZE大小是32K,通常顯得有點小,一般可以考慮設(shè)置成1M(1048576)。這個參數(shù)不能設(shè)置過大,因為每個連接都要分配同樣的排序內(nèi)存。

(2) SORT_MULTIBLOCK_READ_COUNT:增大這個參數(shù)可以提高臨時表空間排序性能,該參數(shù)默認(rèn)是2,可以改成32來對比一下排序查詢時間變化。注意,這個參數(shù)的最大值與平臺有關(guān)系。

如何提高oracle視圖的查詢速度?

1、可以縮小到5張表,因為很多都是從一張表里取出來的數(shù)據(jù);

2、不能子查詢因為是要顯示數(shù)據(jù)子查詢只是查詢條件;

3不能建立索引,因為這樣會影響表的增刪改,它里面都是導(dǎo)入進去的一次增加上千條都有可能;

4、定期結(jié)轉(zhuǎn)是什么意思,表示沒看懂。時間發(fā)的太長的話就算了;

5、定期結(jié)轉(zhuǎn)的意思就是,將你要建立視圖的幾種表數(shù)據(jù)“轉(zhuǎn)移”到一張新表里面去,不用視圖查詢。數(shù)據(jù)庫全文檢索是RDBMS自帶的擴展功能,可以實現(xiàn)高速查詢。全文檢索建議搜索下關(guān)鍵字,什么lucene之類的就出來了。

如何檢查oracle數(shù)據(jù)庫性能

oracle的性能判斷需要綜合數(shù)據(jù)庫的多個運行指標(biāo)來判斷:

1、進程數(shù)量和占用cpu:這個主要看有沒有長時間占用cpu的進行。通常會判斷大出sql,需要優(yōu)化;這個可以用執(zhí)行計劃或者awr報告查看;

2、內(nèi)存占用:主要用系統(tǒng)命令查看ora_占用和系統(tǒng)總內(nèi)存的比例,swap的使用率;通常swap使用率低就沒事;這個主要使用系統(tǒng)命令;

3、磁盤占用率:防止磁盤空間不足,需要的主要在系統(tǒng)和用戶表空間、RMAN等操作上;這個主要使用系統(tǒng)命令;RMAN命令查看

oracle查詢數(shù)據(jù)速度慢,已建索引的。求助

方法如下:

Oracle中建立索引,會提高查詢速度: create index 索引名 on 表名(列名);

例如:

create index index_userid on tbl_detail(userid);

如何找數(shù)據(jù)庫表的主鍵字段的名稱?

SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and table_name='AAA'; select * from dba_cons_columns where CONSTRAINT_NAME='SYS_AAA';

Oracle 在創(chuàng)建主鍵(可以不加constraint SYS_AAA),會為庫表自動創(chuàng)建索引,

索引的列為主鍵列。 并且當(dāng)庫表某些列名或者庫表名改變時候,

Oracle自動創(chuàng)建的索引SYS_AAA,中的索引列也會自動更新(類似于視圖),并且SYS_AAA會與名字更改后的庫表還是保持索引關(guān)系。 關(guān)鍵系統(tǒng)庫表: desc dba_constraints desc dba_cons_columns

desc dba_indexes desc dba_ind_columns desc DBA_TAB_COLUMNS

例子1:更改庫表的列名

ALTER TABLE AAA RENAME COLUMN ID TO AAA_ID; create table AAA ( ID NUMBER(8), NAME CHAR(20),

constraint SYS_AAA primary key(ID) );

//查找約束名字

select c.CONSTRAINT_NAME,c.table_name,cc.COLUMN_NAME from user_constraints c, user_cons_columns cc

where c.constraint_name=cc.constraint_name and c.table_name ='AAA' AND C.CONSTRAINT_TYPE='P';

CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------------------------ ------------ ------------- SYS_AAA AAA ID

//查找索引

select index_name,index_type,uniqueness from user_indexes where table_name='AAA'; INDEX_NAME INDEX_TYPE UNIQUENES

名稱欄目:oracle怎么查看速度 oracle 查看磁盤讀寫速度
文章URL:http://www.rwnh.cn/article14/hiihge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司品牌網(wǎng)站制作、靜態(tài)網(wǎng)站、電子商務(wù)網(wǎng)站維護、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)
安顺市| 延津县| 大方县| 乐业县| 裕民县| 阿尔山市| 中方县| 石景山区| 宝清县| 苏尼特左旗| 策勒县| 怀安县| 黄石市| 疏勒县| 故城县| 克山县| 镇平县| 个旧市| 娄烦县| 盐边县| 肥乡县| 九龙县| 集贤县| 栖霞市| 台前县| 繁昌县| 松阳县| 土默特右旗| 三江| 历史| 佛山市| 台中县| 长宁县| 南昌县| 松江区| 天柱县| 教育| 嫩江县| 阜平县| 天等县| 江门市|