成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

優化數據庫大幅度提高Oracle的性能

瀏覽:13日期:2023-11-13 08:35:29
幾個簡單的步驟大幅提高Oracle性能--我優化數據庫的三板斧。 數據庫優化的討論可以說是一個永恒的主題。資深的Oracle優化人員通常會要求提出性能問題的人對數據庫做一個statspack,貼出數據庫配置等等。還有的人認為要抓出執行最慢的語句來進行優化。但實際情況是,提出疑問的人很可能根本不懂執行計劃,更不要說statspack了。而我認為,數據庫優化,應該首先從大的方面考慮:網絡、服務器硬件配置、操作系統配置、Oracle服務器配置、數據結構組織、然后才是具體的調整。實際上網絡、硬件等往往無法決定更換,應用程序一般也無法修改,因此應該著重從數據庫配置、數據結構上來下手,首先讓數據庫有一個良好的配置,然后再考慮具體優化某些過慢的語句。我在給我的用戶系統進行優化的過程中,總結了一些基本的,簡單易行的辦法來優化數據庫,算是我的三板斧,呵呵。不過請注重,這些不一定普遍使用,甚至有的會有副作用,但是對OLTP系統、基于成本的數據庫往往行之有效,不妨試試。(注:附件是Burleson寫的用來報告數據庫性能等信息的腳本,本文用到) 一.設置合適的SGA 經常有人抱怨服務器硬件很好,但是Oracle就是很慢。很可能是內存分配不合理造成的。(1)假設內存有512M,這通常是小型應用。建議Oracle的SGA大約240M,其中:共享池(SHARED_POOL_SIZE)可以設置60M到80M,根據實際的用戶數、查詢等來定。數據塊緩沖區可以大致分配120M-150M,8i下需要設置DB_BLOCK_BUFFERS,DB_BLOCK_BUFFER*DB_BLOCK_SIZE等于數據塊緩沖區大小。9i 下的數據緩沖區可以用db_cache_size來直接分配。 (2)假設內存有1G,Oracle 的SGA可以考慮分配500M:共享池分配100M到150M,數據緩沖區分配300M到400M。 (3)內存2G,SGA可以考慮分配1.2G,共享池300M到500M,剩下的給數據塊緩沖區。 (4)內存2G以上:共享池300M到500M就足夠啦,再多也沒有太大幫助;(Biti_rainy有專述)數據緩沖區是盡可能的大,但是一定要注重兩個問題:一是要給操作系統和其他應用留夠內存,二是對于32位的操作系統,Oracle的SGA有1.75G的限制。有的32位操作系統上可以突破這個限制,方法還請看Biti的大作吧。 二.分析表和索引,更改優化模式 Oracle默認優化模式是CHOOSE,在這種情況下,假如表沒有經過分析,經常導致查詢使用全表掃描,而不使用索引。這通常導致磁盤I/O太多,而導致查詢很慢。假如沒有使用執行計劃穩定性,則應該把表和索引都分析一下,這樣可能直接會使查詢速度大幅提升。分析表命令可以用ANALYZE TABLE 分析索引可以用ANALYZE INDEX命令。對于少于100萬的表,可以考慮分析整個表,對于很大的表,可以按百分比來分析,但是百分比不能過低,否則生成的統計信息可能不準確。可以通過DBA_TABLES的LAST_ANALYZED列來查看表是否經過分析或分析時間,索引可以通過DBA_INDEXES的LAST_ANALYZED列。 下面通過例子來說明分析前后的速度對比。(表CASE_GA_AJZLZ大約有35萬數據,有主鍵)首先在SQLPLUS中打開自動查詢執行計劃功能。(第一次要執行RDBMSADMINutlXPlan.sql來創建PLAN_TABLE這個表) SQL> SET AUTOTRACE ONSQL>SET TIMING ON 通過SET AUTOTRACE ON 來查看語句的執行計劃,通過SET TIMING ON 來查看語句運行時間。 SQL> select count(*) from CASE_GA_AJZLZ;COUNT(*)----------346639已用時間: 00: 00: 21.38Execution Plan0 SELECT STATEMENT Optimizer=CHOOSE1 0 SORT (AGGREGATE)2 1 TABLE Access (FULL) OF 'CASE_GA_AJZLZ'…………………… 請注重上面分析中的TABLE ACCESS(FULL),這說明該語句執行了全表掃描。而且查詢使用了21.38秒。這時表還沒有經過分析。下面我們來對該表進行分析: SQL> analyze table CASE_GA_AJZLZ compute statistics; 表已分析。已用時間: 00: 05: 357.63。然后再來查詢: SQL> select count(*) from CASE_GA_AJZLZ;COUNT(*)----------346639已用時間: 00: 00: 00.71Execution 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=351Card=346351)………………………… 請注重,這次時間僅僅用了0.71秒!這要歸功于INDEX(FAST FULL SCAN)。通過分析表,查詢使用了PK_AJZLZ索引,磁盤I/O大幅減少,速度也大幅提升!下面的實用語句可以用來生成分析某個用戶的所有表和索引,假設用戶是GAXZUSR: SQL> set pagesize 0SQL> spool d:analyze_tables.sql;SQL> select 'analyze table 'owner'.'table_name' compute statistics;' from dba_tables where owner='GAXZUSR';SQL> spool offSQL> spool spool d:analyze_indexes.sql;SQL> select 'analyze index 'owner'.'index_name' compute statistics;' from dba_indexes where owner='GAXZUSR';SQL> spool offSQL> @d:analyze_tables.sqlSQL> @d:analyze_indexes.sql解釋:上面的語句生成了兩個sql文件,分別分析全部的GAXZUSR的表和索引。假如需要按照百分比來分析表,可以修改一下腳本。通過上面的步驟,我們就完成了對表和索引的分析,可以測試一下速度的改進啦。建議定期運行上面的語句,尤其是數據經過大量更新。 當然,也可以通過dbms_stats來分析表和索引,更方便一些。但是我仍然習慣上面的方法,因為成功與否會直接提示出來。另外,我們可以將優化模式進行修改。optimizer_mode值可以是RULE、CHOOSE、FIRST_ROWS和ALL_ROWS。對于OLTP系統,可以改成FIRST_ROWS,來要求查詢盡快返回結果。這樣即使不用分析,在一般情況下也可以提高查詢性能。但是表和索引經過分析后有助于找到最合適的執行計劃。 三.設置cursor_sharing=FORCE 或SIMILAR 這種方法是8i才開始有的,oracle805不支持。通過設置該參數,可以強制共享只有文字不同的語句解釋計劃。例如下面兩條語句可以共享: SQL> SELECT * FROM MYTABLE WHERE NAME='tom'SQL> SELECT * FROM MYTABLE WHERE NAME='turner' 這個方法可以大幅降低緩沖區利用率低的問題,避免語句重新解釋。通過這個功能,可以很大程度上解決硬解析帶來的性能下降的問題。個人感覺可根據系統的實際情況,決定是否將該參數改成FORCE。該參數默認是exact。不過一定要注重,修改之前,必須先給ORACLE打補丁,否則改之后oracle會占用100%的CPU,無法使用。對于ORACLE9i,可以設置成SIMILAR,這個設置綜合了FORCE和EXACT的優點。不過請慎用這個功能,這個參數也可能帶來很大的負面影響! 四.將常用的小表、索引釘在數據緩存KEEP池中 內存上數據讀取速度遠遠比硬盤中讀取要快,據稱,內存中數據讀的速度是硬盤的14000倍!假如資源比較豐富,把常用的小的、而且經常進行全表掃描的表給釘內存中,當然是在好不過了。可以簡單的通過ALTER TABLE tablename CACHE來實現,在ORACLE8i之后可以使用ALTER TABLE table STORAGE(BUFFER_POOL KEEP)。一般來說,可以考慮把200數據塊之內的表放在keep池中,當然要根據內存大小等因素來定。關于如何查出那些表或索引符合條件,可以使用本文提供的access.sql和access_report.sql。這兩個腳本是聞名的Oracle專家 Burleson寫的,你也可以在讀懂了情況下根據實際情況調整一下腳本。對于索引,可以通過ALTER INDEX indexname STORAGE(BUFFER_POOL KEEP)來釘在KEEP池中。 將表定在KEEP池中需要做一些預備工作。對于ORACLE9i 需要設置DB_KEEP_CACHE_SIZE,對于8i,需要設置buffer_pool_keep。在8i中,還要修改db_block_lru_latches,該參數默認是1,無法使用buffer_pool_keep。該參數應該比2*3*CPU數量少,但是要大于1,才能設置DB_KEEP_CACHE_BUFFER。buffer_pool_keep從db_block_buffers中分配,因此也要小于db_block_buffers。設置好這些參數后,就可以把常用對象永久釘在內存里。 五.設置optimizer_max_permutations 對于多表連接查詢,假如采用基于成本優化(CBO),ORACLE會計算出很多種運行方案,從中選擇出最優方案。這個參數就是設置oracle究竟從多少種方案來選擇最優。假如設置太大,那么計算最優方案過程也是時間比較長的。Oracle805和8i默認是80000,8建議改成2000。對于9i,已經默認是2000了。 六.調整排序參數 (1) SORT_AREA_SIZE:默認的用來排序的SORT_AREA_SIZE大小是32K,通常顯得有點小,一般可以考慮設置成1M(1048576)。這個參數不能設置過大,因為每個連接都要分配同樣的排序內存。 (2) SORT_MULTIBLOCK_READ_COUNT:增大這個參數可以提高臨時表空間排序性能,該參數默認是2,可以改成32來對比一下排序查詢時間變化。注重,這個參數的最大值與平臺有關系。
標簽: Oracle 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
午夜精品在线视频一区| 色视频欧美一区二区三区| 国产裸体歌舞团一区二区| 另类小说视频一区二区| 国产精品综合久久| 欧美激情偷拍| 色婷婷国产精品综合在线观看| 欧美一级高清大全免费观看| 国产精品丝袜在线| 午夜精品久久久久影视| 高清成人在线观看| 国产区日韩欧美| 91精品免费在线观看| 国产精品国产a| 激情亚洲综合在线| 亚洲视频在线二区| 欧美三级一区二区| 中文字幕av免费专区久久| 亚洲电影第三页| 99国产欧美另类久久久精品| 国产私拍一区| 精品乱人伦小说| 亚洲精品大片www| 国产一区二区不卡在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美私人免费视频| 国产精品久久久久9999吃药| 久久国产三级精品| 欧美日韩精品久久| 欧美日韩精品一区二区三区| 国产精品成人午夜| 国产乱码字幕精品高清av | 秋霞午夜鲁丝一区二区老狼| 99在线精品视频| 久久一区二区三区四区五区 | 日韩免费在线观看| 夜夜嗨av一区二区三区网页 | 日韩精品亚洲专区| 欧美天天在线| 欧美日高清视频| 一区二区三区小说| 91一区一区三区| 久久婷婷av| 日本一区二区免费在线观看视频| 蜜桃av一区二区在线观看| 欧美午夜一区| 欧美一区二区三区在线观看视频 | 成人免费在线播放视频| 波多野洁衣一区| 在线免费不卡电影| 亚洲最新视频在线观看| 欧美连裤袜在线视频| 在线播放中文字幕一区| 性做久久久久久久免费看| 欧美日韩亚洲一区二区三区在线观看 | 国产日韩精品一区| 精品一区二区日韩| 国产精品一区亚洲| 国产精品久久久久久久久免费丝袜 | 不卡av免费在线观看| 在线观看欧美精品| 夜夜嗨av一区二区三区四季av | 亚洲欧美偷拍另类a∨色屁股| bt7086福利一区国产| 欧美亚洲国产一区在线观看网站| 亚洲欧美激情在线| 欧美日本亚洲| 久久在线免费观看| 精品写真视频在线观看| 蜜桃av综合| 亚洲另类在线视频| 欧美特黄一区| 久久综合久久久久88| 国产综合色在线视频区| 色偷偷久久人人79超碰人人澡| 一区二区三区在线视频观看| 欧美日韩日本国产亚洲在线| 久久免费美女视频| 成人午夜视频免费看| 欧美日韩免费一区二区三区视频| 丝袜美腿亚洲色图| 国产毛片久久| 亚洲美女少妇撒尿| 国产主播精品| 亚洲国产精品99久久久久久久久| 91在线精品一区二区三区| 精品国产乱码久久久久久蜜臀| 国产成人av电影在线| 欧美一级片免费看| 国产成人精品亚洲日本在线桃色 | 成人h版在线观看| 欧美电影免费观看高清完整版在线观看| 久久97超碰色| 欧美在线免费观看亚洲| 日本va欧美va精品发布| 久久婷婷久久| 视频一区二区三区在线| 久久亚洲高清| 日韩精品视频网站| 欧洲精品一区二区三区在线观看| 日韩电影在线免费观看| 欧洲生活片亚洲生活在线观看| 日本欧美一区二区三区乱码| 色欧美日韩亚洲| 日本三级韩国三级欧美三级| 欧美在线观看你懂的| 精品午夜久久福利影院| 69堂成人精品免费视频| 国产成人av电影在线| 精品毛片乱码1区2区3区| 91丝袜美腿高跟国产极品老师| 精品成人免费观看| www..com久久爱| 国产目拍亚洲精品99久久精品| 欧美精品黄色| 国产精品护士白丝一区av| 亚洲精品免费观看| 天天综合网 天天综合色| 欧美日韩在线电影| 国产成人av一区| 国产午夜亚洲精品午夜鲁丝片| 欧美午夜国产| 亚洲一区二区三区在线看| 校园激情久久| 美国精品在线观看| 欧美一区二区福利视频| 97久久超碰精品国产| 国产精品久久久久婷婷二区次| av成人毛片| 日本女人一区二区三区| 717成人午夜免费福利电影| a级精品国产片在线观看| 中文幕一区二区三区久久蜜桃| 99精品免费视频| 日韩国产欧美在线视频| 日韩亚洲欧美中文三级| 欧美91福利在线观看| 一区二区三区久久久| 日本高清不卡视频| 波多野结衣在线aⅴ中文字幕不卡| 久久欧美中文字幕| 一区在线播放| 手机精品视频在线观看| 日韩欧美一级在线播放| 在线高清一区| 视频一区二区三区中文字幕| 欧美一区二区三区系列电影| 午夜精品剧场| 日韩电影在线免费| 精品国产91亚洲一区二区三区婷婷| 红桃视频欧美| 青青草成人在线观看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲成av人片在线观看| 欧美一区二区三区精品| 伊人蜜桃色噜噜激情综合| 日本vs亚洲vs韩国一区三区| 欧美成人vr18sexvr| 在线观看成人av| 精品国产一区二区精华| 欧美日韩国产精品成人| 91国偷自产一区二区开放时间 | 亚洲一区精品在线| 亚洲裸体在线观看| 国产欧美综合一区二区三区| 一区二区三区在线免费| 在线综合视频播放| 亚洲国产高清一区二区三区| 国模冰冰炮一区二区| 国产精品久久久久三级| 欧洲国内综合视频| 亚洲欧美一区二区原创| 免费精品视频最新在线| 国产清纯白嫩初高生在线观看91 | 一区二区不卡在线视频 午夜欧美不卡'| 久久99精品久久久久久久久久久久 | 久久久久久久久久久久久女国产乱| 午夜亚洲性色福利视频| 成人免费三级在线| 亚洲午夜日本在线观看| 2021中文字幕一区亚洲| 久久久久久久久久久久久9999| 不卡的电影网站| 日韩成人一区二区三区在线观看| 久久久噜噜噜久久中文字幕色伊伊| 久久一区视频| 很黄很黄激情成人| 国产盗摄女厕一区二区三区| 亚洲一卡二卡三卡四卡五卡| www日韩大片| 91国在线观看| 亚洲精品资源| 91老师片黄在线观看| 免费在线一区观看| 亚洲视频在线观看一区| 亚洲精品在线三区| 欧美在线不卡视频| 国产一区二区三区免费不卡| 欧美在线资源| 国模一区二区三区白浆|