国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

優(yōu)化數(shù)據(jù)庫大幅度提高Oracle的性能

數(shù)據(jù)庫 Oracle 數(shù)據(jù)庫運維
本文將介紹幾個簡單的步驟大幅提高Oracle性能,也是本文作者優(yōu)化數(shù)據(jù)庫的三板斧。包括設(shè)置合適的SGA、分析表和索引,更改優(yōu)化模式等等。

低碳指數(shù):在這里為了方便計算和直觀,我們以Intel至強X7500處理器的TDP為標(biāo)準(zhǔn)計算能耗(TDP=130W/h=2.167W/m=0.036W/s)。另外根據(jù)中國林業(yè)局的數(shù)據(jù),一棵樹一天吸收二氧化碳量為5.023kg,每一度電產(chǎn)生0.785公斤二氧化碳。

如果按照本文方法優(yōu)化后數(shù)據(jù)庫執(zhí)行時間由5分35秒縮減到0.71秒,也就是單位時間少99.7%的能量消耗。那么在一天里將減少3.101kw電能消耗,約合2.434kg二氧化碳排放,按我們的計算是一天減少0.48棵樹二氧化碳吸收量。

數(shù)據(jù)庫優(yōu)化的討論可以說是一個永恒的主題。資深的Oracle優(yōu)化人員通常會要求提出性能問題的人對數(shù)據(jù)庫做一個statspack,貼出數(shù)據(jù)庫配置等等。還有的人認為要抓出執(zhí)行最慢的語句來進行優(yōu)化。但實際情況是,提出疑問的人很可能根本不懂執(zhí)行計劃,更不要說statspack了。而我認為,數(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默認優(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
  SQL>SET 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ù)默認是exact。不過一定要注意,修改之前,必須先給ORACLE打補丁,否則改之后oracle會占用100%的CPU,無法使用。對于ORACLE9i,可以設(shè)置成SIMILAR,這個設(shè)置綜合了FORCE和EXACT的優(yōu)點。不過請慎用這個功能,這個參數(shù)也可能帶來很大的負面影響!

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

內(nèi)存上數(shù)據(jù)讀取速度遠遠比硬盤中讀取要快,據(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ù)默認是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默認是80000,8建議改成2000。對于9i,已經(jīng)默認是2000了。

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

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

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

【編輯推薦】

  1. 提高Oracle數(shù)據(jù)庫的查詢統(tǒng)計速度
  2. 如何用智能優(yōu)化器提高Oracle的性能
  3. 異構(gòu)服務(wù)提高Oracle連接異種數(shù)據(jù)源能力
責(zé)任編輯:彭凡 來源: zhujiangroad
相關(guān)推薦

2018-01-30 08:47:46

存儲查詢性能

2015-11-16 11:31:35

Kubernetes網(wǎng)絡(luò)性能新版本特性

2010-05-10 15:50:39

Oracle數(shù)據(jù)庫性能

2010-04-27 16:41:07

Oracle性能

2018-11-13 14:15:33

數(shù)據(jù)庫OracleMySQL

2013-11-13 15:22:16

架構(gòu)系統(tǒng)架構(gòu)

2020-12-21 12:50:48

RPA數(shù)字化AI

2011-05-27 06:58:13

LifeSize碳排放

2011-05-20 10:30:20

ORACLE數(shù)據(jù)庫性能優(yōu)化

2011-05-18 09:39:19

Oracle數(shù)據(jù)庫性能優(yōu)化

2022-07-13 15:41:13

代碼檢查審查員開發(fā)

2010-11-15 16:13:24

Oracle數(shù)據(jù)庫性能

2010-04-09 15:08:17

Oracle 數(shù)據(jù)庫性

2025-04-28 10:16:35

VSCode插件開發(fā)

2025-09-01 04:00:15

VSCode插件Github

2010-04-21 14:00:48

Oracle數(shù)據(jù)庫

2009-08-14 10:14:23

H.264編碼器數(shù)字視頻編碼標(biāo)準(zhǔn)PowerSmart

2024-04-30 10:04:14

目標(biāo)檢測AI

2015-05-05 15:53:01

2011-04-13 09:19:05

Oracle數(shù)據(jù)庫系統(tǒng)性能
點贊
收藏

51CTO技術(shù)棧公眾號

国产在线视频一区| 亚洲黄色网址在线观看| 成av人片在线观看www| 99久久99精品久久久久久| 91国产精品电影| xxxx成人| 日韩欧美亚洲综合| 一区二区传媒有限公司| 一区二区国产精品| 国产91热爆ts人妖在线| 欧美黄色网络| 欧美成人一区二区三区在线观看| 亚洲jizzjizz妇女| 国产真实乱偷精品视频免| 91综合免费在线| 精品自拍偷拍| 日韩电影在线观看永久视频免费网站| 国产污污在线观看| 久久先锋资源网| 欧美亚洲视频一区| 久久国产毛片| 电影午夜精品一区二区三区| 亚洲va久久久噜噜噜久久| 日韩有码视频在线| 都市激情亚洲综合| 亚洲精品国产美女| 久久免费电影| 麻豆av免费在线| 亚洲最黄网站| 亚洲综合在线小说| 精品av一区二区| 2019av中文字幕| 韩国三级大全久久网站| 亚洲一区二区黄| 校园春色亚洲| 亚洲国产欧美一区| 搞黄网站在线看| 亚洲精品一区二区三区在线观看 | 亚洲第一黄网| 成人精品久久久| 日本一区二区在线看| 久久久亚洲影院| 嫩呦国产一区二区三区av| 在线视频欧美日韩| 国产一区二区三区四区五区3d| 亚洲欧美色图片| 成人性生活视频| 国产午夜精品一区二区三区| 激情黄产视频在线免费观看| 亚洲国产高清福利视频| a天堂资源在线观看| 精品一区二区三区在线视频| 亚洲美女自拍偷拍| 国产精品77777竹菊影视小说| 亚洲三级一区| 精品亚洲国内自在自线福利| 中国黄色录像片| 国产91富婆露脸刺激对白| 国产毛片久久久久久国产毛片| av在线资源| 日韩成人性视频| 99re66热这里只有精品4| 日韩亚洲欧美中文高清在线| 国产日韩一区二区三免费高清| 久久6免费高清热精品| 老司机在线精品视频| 国产精品草莓在线免费观看| 一区二区蜜桃| 日韩高清av电影| 成人精品免费看| gogo高清免费视频| 色综合色狠狠综合色| 黄色一级大片在线免费看产| 精品一区二区三区四区| 亚洲2区在线| 亚洲free性xxxx护士hd| 午夜在线a亚洲v天堂网2018| 一区二区三区四区视频在线| 国产成a人无v码亚洲福利| 国产成人av影视| 亚洲午夜精品一区二区三区他趣| 在线观看免费黄视频| 亚洲精品之草原avav久久| 美女视频一区| 国产精品成久久久久三级| 亚洲精品欧洲| 欧美成人三级在线视频| 一区二区三区在线视频免费| 麻豆最新免费在线视频| 久久精品影视伊人网| 久久中文字幕av| 中文字幕制服丝袜在线| 国产精品久久久99| 黄色视屏免费在线观看| 久久久国产一区| 婷婷久久综合| 97干在线视频| 欧美午夜女人视频在线| 欧美色片在线观看| 91成人免费观看| 91在线丨porny丨国产| 伊人色综合网| 亚洲热线99精品视频| 日韩精品一区二区久久| 国产女教师bbwbbwbbw| 婷婷国产v国产偷v亚洲高清| 国产日韩电影| 91成人伦理在线电影| 久久久综合网站| 日本高清在线观看视频| 国产精品第1页| 99热99精品| 大片免费在线观看| 91成人国产在线观看| 激情欧美一区二区三区在线观看| 丝袜美女写真福利视频| 国产一区二区精品丝袜| 亚洲大胆av| 国产一二区视频| 久久国产一区二区三区| 日韩国产精品91| 嫩草研究院在线| 91成人在线播放| 99热99精品| 手机看片久久| 免费在线国产精品| 午夜欧美在线一二页| 色悠久久久久综合先锋影音下载| 亚洲v欧美v另类v综合v日韩v| 日韩欧美国产激情| 亚洲国产视频二区| 精品一区二区三区毛片| 欧美一区二区在线不卡| 亚洲欧美亚洲| 在线看黄网站| 欧美一二三视频| 国产视频在线观看一区二区三区| 性欧美videohd高精| 日本中文不卡| 欧美麻豆精品久久久久久| 手机亚洲手机国产手机日韩| 国产一区二区视频免费在线观看 | 精品一卡二卡三卡| 亚洲精品按摩视频| 久久国产高清| 国产高清视频免费最新在线| 国产日韩在线看片| 亚洲综合色视频| 日日狠狠久久偷偷综合色| 黄色动漫在线免费看| 日韩风俗一区 二区| 日本vs亚洲vs韩国一区三区二区 | 国产综合av在线| 国产婷婷97碰碰久久人人蜜臀 | 亚洲人成人77777线观看| 欧美撒尿777hd撒尿| 欧美激情欧美| 美臀av在线| 国产精品一区二区三区毛片淫片| 国产精品久久夜| 曰本一区二区三区视频| 91福利免费| 国产成人精品免高潮费视频| 中文字幕一区免费在线观看| 精品国产亚洲日本| 91最新在线观看| 日本中文字幕不卡免费| 一区二区三区不卡在线观看| 亚欧洲精品视频在线观看| 国产尤物av一区二区三区 | 成人免费乱码大片a毛片软件| 精品自在线视频| 欧美国产精品专区| 精品国产影院| 一级特黄视频| 97超碰在线播放| 91精品国产综合久久婷婷香蕉| 亚洲少妇自拍| 17videosex性欧美| 日韩国产欧美亚洲| 国内精品久久久久影院 日本资源| 2024国产精品| 欧美美女啪啪| 伊人网站在线| 欧美日韩高清在线一区| 欧美电视剧在线看免费| 盗摄精品av一区二区三区| 日韩精品一区二区三区中文字幕 | 一本久道久久综合| 欧美mv和日韩mv国产网站| 精品在线播放午夜| 日韩不卡在线视频| 中日韩一区二区三区| 久久精品99| 中文字幕国产亚洲2019| 中文字幕中文字幕一区| 在线电影一区| 久久天天久久| 91破解版在线看| 日本一区二区三区www|