新聞中心
在現(xiàn)今經(jīng)濟(jì)高速發(fā)展的時(shí)代,優(yōu)化已成為企業(yè)成功的關(guān)鍵。如何做好優(yōu)化?如何利用提高生產(chǎn)效率、提高產(chǎn)品質(zhì)量,降低成本,成為內(nèi)部業(yè)務(wù)流程優(yōu)化的佼佼者?以下就是幾種:

哈爾濱網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,哈爾濱網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為哈爾濱1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的哈爾濱做網(wǎng)站的公司定做!
1. 制度優(yōu)化
企業(yè)內(nèi)部制度與規(guī)章的優(yōu)化,可以產(chǎn)生明顯的效益。通過不斷地調(diào)整規(guī)章體系以提高團(tuán)隊(duì)的協(xié)作性、縮短工作流程、減少客戶投訴和重復(fù)溝通,這將大大提高生產(chǎn)效率。制度優(yōu)化可以分為三個(gè)方面,一是管理制度,二是職業(yè)道德和責(zé)任感,三是員工機(jī)制。
2. 流程優(yōu)化
每一件事情都有它的流程,流程的合理化能有效地提高效率和極限化嚴(yán)格質(zhì)量控制。可以通過通過把生產(chǎn)或管理流程放在行業(yè)規(guī)范標(biāo)準(zhǔn)里,仔細(xì)評(píng)估這個(gè)流程的每個(gè)環(huán)節(jié),在必要的地方添加設(shè)備,接口和技術(shù)手段,不斷地優(yōu)化它而不影響下游客戶的需求。
3. 技術(shù)優(yōu)化
在信息化的今天,技術(shù)優(yōu)化已經(jīng)成為企業(yè)成功的必要要素。通過對(duì)生產(chǎn)過程把控、產(chǎn)品質(zhì)量追求的管控等方面的技術(shù)手段,增加生產(chǎn)效率和降低成本。這種優(yōu)化可以包括多項(xiàng)技術(shù),如ERP、MES、SPC、PDS和APC等。
4. 設(shè)計(jì)優(yōu)化
在實(shí)現(xiàn)更高品質(zhì)和降低成本的同時(shí),設(shè)計(jì)優(yōu)化有助于改進(jìn)產(chǎn)品性能和工藝。設(shè)計(jì)優(yōu)化應(yīng)在產(chǎn)品生命周期全過程中進(jìn)行,從最初的印刷設(shè)計(jì)和建筑設(shè)計(jì)(如房間布局和機(jī)件)到產(chǎn)品設(shè)計(jì)(如規(guī)格、材料和結(jié)構(gòu))再到銷售和售后服務(wù)(如保修期和維護(hù)保養(yǎng))。
5. 績(jī)效優(yōu)化
企業(yè)在走在發(fā)展的路上,必然面臨著一些問題,其中比較重要的問題是關(guān)于人員的績(jī)效考核。雖然每個(gè)企業(yè)自己的形式相同,在具體操作過程中還是有很多不同的因素讓績(jī)效考核變得有所不同???jī)效考核需要根據(jù)企業(yè)的目標(biāo)設(shè)定,基于統(tǒng)一的標(biāo)準(zhǔn)和方法,權(quán)衡不同人員的貢獻(xiàn)并作出正確的決策。
為實(shí)現(xiàn)企業(yè)的全方位發(fā)展,企業(yè)需要不斷地優(yōu)化自己的管理、流程和技術(shù),方能贏得市場(chǎng)競(jìng)爭(zhēng)的優(yōu)勢(shì)。這些有利于提升企業(yè)的能力、水平和信譽(yù)。只有堅(jiān)持不懈地進(jìn)行優(yōu)化,才能取得持久的收益,成為業(yè)界的佼佼者!
相關(guān)問題拓展閱讀:
- 怎樣保持Oracle數(shù)據(jù)庫(kù)SQL性能的穩(wěn)定性
- 影響數(shù)據(jù)庫(kù)性能的主要因素有哪些?
怎樣保持Oracle數(shù)據(jù)庫(kù)SQL性能的穩(wěn)定性
有客戶遇到SQL性能不穩(wěn)定 突然變差導(dǎo)致系統(tǒng)性能出現(xiàn)嚴(yán)重問題的情況 對(duì)于大型的系統(tǒng)來說 SQL性能不穩(wěn)定 有時(shí)突然變差 這是常常遇到的問題 這也是一些DBA的挑戰(zhàn)
對(duì)于使用Oracle數(shù)據(jù)庫(kù)的應(yīng)用系統(tǒng) 有時(shí)會(huì)出現(xiàn)運(yùn)行得好好的SQL 性能突然變差 特別是對(duì)于OLTP類型系統(tǒng)執(zhí)行頻繁的核心SQL 如果出現(xiàn)性能問題 通常會(huì)影響整個(gè)數(shù)據(jù)庫(kù)的性能 進(jìn)而影響整個(gè)系統(tǒng)的正常運(yùn)行 對(duì)于個(gè)別的SQL 比如較少使用的查詢報(bào)表之類的SQL 如果出現(xiàn)問題 通常只影響少部分功能模塊 而不會(huì)影響整個(gè)系統(tǒng)
那么應(yīng)該怎么樣保持SQL性能的穩(wěn)定性?
SQL的性能變差 通常是在SQL語(yǔ)句重新進(jìn)行了解析 解析時(shí)使用了錯(cuò)誤的執(zhí)行計(jì)劃出現(xiàn)的 下列情況是SQL會(huì)重新解析的原因
SQL語(yǔ)句沒有使用綁定變量 這樣SQL每次執(zhí)行都要解析
SQL長(zhǎng)時(shí)間沒有執(zhí)行 被刷出SHARED POOL 再次執(zhí)行時(shí)需要重新解析
在SQL引用的對(duì)象(表 視圖等)上執(zhí)行了DDL操作 甚至是結(jié)構(gòu)發(fā)生了變化 比如建了一個(gè)索引
對(duì)SQL引用的對(duì)象進(jìn)行了權(quán)限更改森拿
重新分析(收集統(tǒng)計(jì)信息)了SQL引用的表和索引 或者表和索引統(tǒng)計(jì)信息被刪除
修改了與性能相關(guān)的部分參數(shù)
刷新了共享池
當(dāng)然重啟數(shù)據(jù)庫(kù)也會(huì)使所有SQL全部重新解析
SQL重新解析后 跟以前相比 性能突然變差 通常是下列原因
表和索引的優(yōu)化統(tǒng)計(jì)信息被刪除 或者重新收集后統(tǒng)計(jì)信息不準(zhǔn)確 重新收集統(tǒng)計(jì)信息通常是由于收集策略(方法)不正確引起 比如對(duì)分區(qū)表使用yze命令而不是用dbms_stats包 收集統(tǒng)計(jì)信息時(shí)采樣比例過小等等 Oracle優(yōu)化器嚴(yán)重依賴于統(tǒng)計(jì)信息 如果統(tǒng)計(jì)信息有問題 則很容易導(dǎo)致SQL不能使用正確的執(zhí)行計(jì)劃
SQL綁定變量窺螞祥探(bind peeking) 同時(shí)綁定變量對(duì)應(yīng)的列上有直方圖 或者綁定變量的值變化范圍過大 分區(qū)數(shù)據(jù)分布極不均勻
) 綁定變量的列上有悶春搏直方圖
假如表orders存儲(chǔ)所有的訂單 state列有 種不同的值 表示未處理 表示處理成功完成 表示處理失敗 State列上有一個(gè)索引 表中絕大部分?jǐn)?shù)據(jù)的state列為 和 占少數(shù) 有下面的SQL
select * from orders where state=:b
這里:b 是變量 在大多數(shù)情況下這個(gè)值為 則應(yīng)該使用索引 但是如果SQL被重新解析 而之一次執(zhí)行時(shí)應(yīng)用傳給變量b 值為 則不會(huì)使用索引 采用全表掃描的方式來訪問表 對(duì)于綁定變量的SQL 只在之一次執(zhí)行時(shí)才會(huì)進(jìn)行綁定變量窺探 并以此確定執(zhí)行計(jì)劃 該SQL后續(xù)執(zhí)行時(shí)全部按這個(gè)執(zhí)行計(jì)劃 這樣在后續(xù)執(zhí)行時(shí) b 變量傳入的值為 的時(shí)候 仍然是之一次執(zhí)行時(shí)產(chǎn)生的執(zhí)行計(jì)劃 即使用的是全表掃描 這樣會(huì)導(dǎo)致性能很差
) 綁定變量的值變化范圍過大
同樣假如orders表有一列created_date表示一筆訂單的下單時(shí)間 orders表里面存儲(chǔ)了最近 年的數(shù)據(jù) 有如下的SQL
Select * from orders where created_date >=:b ;
假如大多數(shù)情況下 應(yīng)用傳入的b 變量值為最近幾天內(nèi)的日期值 那么SQL使用的是created_date列上的索引 而如果b 變量值為 個(gè)月之前的一個(gè)值 那么就會(huì)使用全表掃描 與上面描述的直方圖引起的問題一樣 如果SQL第 次執(zhí)行時(shí)傳入的變量值引起的是全表掃描 那么將該SQL后續(xù)執(zhí)行時(shí)都使用了全表掃描 從而影響了性能
) 分區(qū)數(shù)據(jù)量不均勻
對(duì)于范圍和列表分區(qū) 可能存在各個(gè)分區(qū)之間數(shù)據(jù)量極不均勻的情況下 比如分區(qū)表orders按地區(qū)area進(jìn)行了分區(qū) P 分區(qū)只有幾千行 而P 分區(qū)有 萬行數(shù)據(jù) 同時(shí)假如有一列product_id 其上有一個(gè)本地分區(qū)索引 有如下的SQL
select * from orders where area=:b and product_id =:b
這條SQL由于有area條件 因此會(huì)使用分區(qū)排除 如果第 次執(zhí)行時(shí)應(yīng)用傳給b 變量的值正好落在P 分區(qū)上 很可能導(dǎo)致SQL采用全表掃描訪問 如前面所描述的 導(dǎo)致SQL后續(xù)執(zhí)行時(shí)全部使用了全表掃描
其他原因 比如表做了類似于MOVE操作之后 索引不可用 對(duì)索引進(jìn)行了更改 當(dāng)然這種情況是屬于維護(hù)不當(dāng)引起的問題 不在本文討論的范圍
綜上所述 SQL語(yǔ)句性能突然變差 主要是因?yàn)榻壎ㄗ兞亢徒y(tǒng)計(jì)信息的原因 注意這里只討論了突然變差的情況 而對(duì)于由于數(shù)據(jù)量和業(yè)務(wù)量的增加性能逐步變差的情況不討論
為保持SQL性能或者說是執(zhí)行計(jì)劃的穩(wěn)定性 需要從以下幾個(gè)方面著手
規(guī)劃好優(yōu)化統(tǒng)計(jì)信息的收集策略 對(duì)于Oracle g來說 默認(rèn)的策略能夠滿足大部分需求 但是默認(rèn)的收集策略會(huì)過多地收集列上的直方圖 由于綁定變量與直方圖固有的矛盾 為保持性能穩(wěn)定 對(duì)使用綁定變量的列 不收集列上的直方圖 對(duì)的確需要收集直方圖的列 在SQL中該列上的條件就不要用綁定變量 統(tǒng)計(jì)信息收集策略 可以考慮對(duì)大部分表 使用系統(tǒng)默認(rèn)的收集策略 而對(duì)于有問題的 可以用DBMS_STATS LOCK_STATS鎖定表的統(tǒng)計(jì)信息 避免系統(tǒng)自動(dòng)收集該表的統(tǒng)計(jì)信息 然后編寫腳本來定制地收集表的統(tǒng)計(jì)信息 腳本中類似如下
exec dbms_stats unlock_table_stats…
exec dbms_stats gather_table_stats…
exec dbms_stats lock_table_stats…
修改SQL語(yǔ)句 使用HINT 使SQL語(yǔ)句按HINT指定的執(zhí)行計(jì)劃進(jìn)行執(zhí)行 這需要修改應(yīng)用 同時(shí)需要逐條SQL語(yǔ)句進(jìn)行 加上測(cè)試和發(fā)布 時(shí)間較長(zhǎng) 成本較高 風(fēng)險(xiǎn)也較大
修改隱含參數(shù) _optim_peek_user_binds 為FALSE 修改這個(gè)參數(shù)可能會(huì)引起性能問題(這里討論的是穩(wěn)定性問題)
使用OUTLINE 對(duì)于曾經(jīng)出現(xiàn)過執(zhí)行計(jì)劃突然變差的SQL語(yǔ)句 可以使用OUTLINE來加固其執(zhí)行計(jì)劃 在 g中DBMS_OUTLN CREATE_OUTLINE可以根據(jù)已有的執(zhí)行正常的SQL游標(biāo)來創(chuàng)建OUTLINE 如果事先對(duì)所有頻繁執(zhí)行的核心SQL使用OUTLINE加固執(zhí)行計(jì)劃 將更大可能地避免SQL語(yǔ)句性能突然變差
注 DBMS_OUTLN可以通過$ORACLE_HOME/rdbms/admin/dbmsol sql腳本來安裝
使用SQL Profile SQL Profile是Oracle g之后的新功能 此處不再介紹 請(qǐng)參考相應(yīng)的文檔
除此之外 可以調(diào)整一些參數(shù)避免潛在的問題 比如將 _btree_bitmap_plans 參數(shù)設(shè)置為FALSE(這個(gè)參數(shù)請(qǐng)參考互聯(lián)網(wǎng)上的文章或Oracle文檔)
lishixinzhi/Article/program/Oracle/202311/18054
影響數(shù)據(jù)庫(kù)性能的主要因素有哪些?
1、1、調(diào)整數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。這一部分在開發(fā)信息系統(tǒng)之前完成,程序員需要考慮是否使用ORACLE數(shù)據(jù)庫(kù)的分區(qū)功能,對(duì)于經(jīng)常訪問的數(shù)據(jù)庫(kù)表是否需要建立索引等。 \x0d\x0a\x0d\x0a2、2、調(diào)整應(yīng)用程序結(jié)構(gòu)設(shè)計(jì)。這一部分也是在開發(fā)信息系統(tǒng)之前完成,程序員在這一步需要考慮應(yīng)用程序使用什么樣的體系結(jié)構(gòu),是使用傳統(tǒng)的Client/Server兩層體系結(jié)構(gòu),還是使用Browser/Web/Database的三層體系結(jié)構(gòu)。不同的應(yīng)用程序體系結(jié)構(gòu)要求的數(shù)據(jù)庫(kù)資源是不同的。 \x0d\x0a\x0d\x0a3、3、調(diào)整數(shù)據(jù)庫(kù)SQL語(yǔ)句。應(yīng)用程序的執(zhí)行最終將歸結(jié)為數(shù)據(jù)庫(kù)中的SQL語(yǔ)句執(zhí)行,因此SQL語(yǔ)句的執(zhí)行效率最終決定了ORACLE數(shù)據(jù)庫(kù)的性能。ORACLE公司推薦使用ORACLE語(yǔ)句優(yōu)化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調(diào)整優(yōu)化SQL語(yǔ)句。 \x0d\x0a\x0d\x0a4、4、調(diào)整服務(wù)器內(nèi)存分銷和段配。內(nèi)存分配是在信息系統(tǒng)運(yùn)行過程中優(yōu)化配置的,數(shù)據(jù)庫(kù)管理員可以根據(jù)數(shù)據(jù)庫(kù)運(yùn)行狀況調(diào)整數(shù)據(jù)庫(kù)系統(tǒng)全局區(qū)(SGA區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大小;還可以調(diào)整程序全局區(qū)(PGA區(qū))的大小。需要注意的是,SGA區(qū)不是越大越好,SGA區(qū)過大會(huì)占用操作系統(tǒng)使用的內(nèi)存而引起虛擬內(nèi)存的頁(yè)面交換,這樣反而會(huì)降低系統(tǒng)。 \x0d\x0a\x0d\x0a5、5、調(diào)整硬盤I/O,這一步是在信息系統(tǒng)開發(fā)之前完成的。數(shù)據(jù)庫(kù)管理員可以將組成同一個(gè)表空間的數(shù)據(jù)文件放在不同的硬盤上,做到硬盤之間I/O負(fù)載均衡。 \x0d\x0a\x0d\x0a6、6、調(diào)整操作系統(tǒng)參數(shù),例如:運(yùn)行在UNIX操作系統(tǒng)上的ORACLE數(shù)據(jù)庫(kù),可以調(diào)整UNIX數(shù)據(jù)緩沖池的大小,每個(gè)進(jìn)程所能使用的內(nèi)存大小等參數(shù)。 \x0d\x0a\x0d\x0a實(shí)際上,上述數(shù)據(jù)庫(kù)優(yōu)化措施之間是相互聯(lián)系的。ORACLE數(shù)據(jù)庫(kù)性能惡化表現(xiàn)基本上都是用戶響應(yīng)時(shí)間比較長(zhǎng),需要用戶長(zhǎng)時(shí)間的等待。但性能惡化的原因卻是多種多樣的,有時(shí)是多個(gè)因素共同造成了性能惡化的結(jié)果,這就需要數(shù)據(jù)庫(kù)管理員有比較全面的計(jì)算機(jī)知識(shí),能夠敏感地察覺到影響數(shù)據(jù)庫(kù)性能的主要原因所在。另外,良好的數(shù)據(jù)庫(kù)管理工具對(duì)于優(yōu)化數(shù)據(jù)庫(kù)性能也是很重要的。 \x0d\x0a\x0d\x0aORACLE數(shù)據(jù)庫(kù)性能優(yōu)化工具 \x0d\x0a\x0d\x0a常用的數(shù)據(jù)庫(kù)性能優(yōu)化工具有: \x0d\x0a\x0d\x0a1、1、ORACLE數(shù)據(jù)庫(kù)在線數(shù)據(jù)字典,ORACLE在線數(shù)據(jù)字典能夠反映出ORACLE動(dòng)態(tài)運(yùn)行情況,對(duì)于調(diào)整數(shù)據(jù)庫(kù)性能是很有幫助的。 \x0d\x0a\x0d\x0a2、2、操作系統(tǒng)工具,例如UNIX操作系統(tǒng)的vmstat,iostat等命令可以查看到系統(tǒng)系統(tǒng)級(jí)內(nèi)存和硬盤I/O的使用情況,這些工具對(duì)于管理員弄清出系統(tǒng)瓶頸出現(xiàn)棚行在什么地方有時(shí)候很有用。 \x0d\x0a\x0d\x0a3、3、SQL語(yǔ)言跟蹤工具(SQL TRACE FACILITY),SQL語(yǔ)言跟蹤工具可以記錄SQL語(yǔ)句的執(zhí)行情況,管理員可以使用虛擬表來調(diào)整實(shí)例,使用SQL語(yǔ)句跟蹤文件調(diào)整應(yīng)用程序性能。SQL語(yǔ)言跟蹤工具將結(jié)果輸出成一個(gè)操作系統(tǒng)的文虧譽(yù)件,管理員可以使用TKPROF工具查看這些文件。 \x0d\x0a\x0d\x0a4、4、ORACLE Enterprise Manager(OEM),這是一個(gè)圖形的用戶管理界面,用戶可以使用它方便地進(jìn)行數(shù)據(jù)庫(kù)管理而不必記住復(fù)雜的ORACLE數(shù)據(jù)庫(kù)管理的命令。 \x0d\x0a\x0d\x0a5、5、EXPLAIN PLAN——SQL語(yǔ)言優(yōu)化命令,使用這個(gè)命令可以幫助程序員寫出高效的SQL語(yǔ)言。 \x0d\x0a\x0d\x0aORACLE數(shù)據(jù)庫(kù)的系統(tǒng)性能評(píng)估 \x0d\x0a\x0d\x0a信息系統(tǒng)的類型不同,需要關(guān)注的數(shù)據(jù)庫(kù)參數(shù)也是不同的。數(shù)據(jù)庫(kù)管理員需要根據(jù)自己的信息系統(tǒng)的類型著重考慮不同的數(shù)據(jù)庫(kù)參數(shù)。 \x0d\x0a\x0d\x0a1、1、在線事務(wù)處理信息系統(tǒng)(OLTP),這種類型的信息系統(tǒng)一般需要有大量的Insert、Update操作,典型的系統(tǒng)包括民航機(jī)票發(fā)售系統(tǒng)、銀行儲(chǔ)蓄系統(tǒng)等。OLTP系統(tǒng)需要保證數(shù)據(jù)庫(kù)的并發(fā)性、可靠性和最終用戶的速度,這類系統(tǒng)使用的ORACLE數(shù)據(jù)庫(kù)需要主要考慮下述參數(shù): \x0d\x0a\x0d\x0al l 數(shù)據(jù)庫(kù)回滾段是否足夠? \x0d\x0a\x0d\x0al l 是否需要建立ORACLE數(shù)據(jù)庫(kù)索引、聚集、散列? \x0d\x0a\x0d\x0al l 系統(tǒng)全局區(qū)(SGA)大小是否足夠? \x0d\x0a\x0d\x0al l SQL語(yǔ)句是否高效? \x0d\x0a\x0d\x0a2、2、數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)(Data Warehousing),這種信息系統(tǒng)的主要任務(wù)是從ORACLE的海量數(shù)據(jù)中進(jìn)行查詢,得到數(shù)據(jù)之間的某些規(guī)律。數(shù)據(jù)庫(kù)管理員需要為這種類型的ORACLE數(shù)據(jù)庫(kù)著重考慮下述參數(shù): \x0d\x0a\x0d\x0al l 是否采用B*-索引或者bitmap索引? \x0d\x0a\x0d\x0al l 是否采用并行SQL查詢以提高查詢效率? \x0d\x0a\x0d\x0al l 是否采用PL/SQL函數(shù)編寫存儲(chǔ)過程? \x0d\x0a\x0d\x0al l 有必要的話,需要建立并行數(shù)據(jù)庫(kù)提高數(shù)據(jù)庫(kù)的查詢效率 \x0d\x0a\x0d\x0aSQL語(yǔ)句的調(diào)整原則 \x0d\x0a\x0d\x0aSQL語(yǔ)言是一種靈活的語(yǔ)言,相同的功能可以使用不同的語(yǔ)句來實(shí)現(xiàn),但是語(yǔ)句的執(zhí)行效率是很不相同的。程序員可以使用EXPLAIN PLAN語(yǔ)句來比較各種實(shí)現(xiàn)方案,并選出更優(yōu)的實(shí)現(xiàn)方案??偟脕碇v,程序員寫SQL語(yǔ)句需要滿足考慮如下規(guī)則: \x0d\x0a\x0d\x0a1、1、盡量使用索引。試比較下面兩條SQL語(yǔ)句: \x0d\x0a\x0d\x0a語(yǔ)句A:SELECT dname, deptno FROM dept WHERE deptno NOT IN \x0d\x0a\x0d\x0a(SELECT deptno FROM emp); \x0d\x0a\x0d\x0a語(yǔ)句B:SELECT dname, deptno FROM dept WHERE NOT EXISTS \x0d\x0a\x0d\x0a(SELECT deptno FROM emp WHERE dept.deptno = emp.deptno); \x0d\x0a\x0d\x0a這兩條查詢語(yǔ)句實(shí)現(xiàn)的結(jié)果是相同的,但是執(zhí)行語(yǔ)句A的時(shí)候,ORACLE會(huì)對(duì)整個(gè)emp表進(jìn)行掃描,沒有使用建立在emp表上的deptno索引,執(zhí)行語(yǔ)句B的時(shí)候,由于在子查詢中使用了聯(lián)合查詢,ORACLE只是對(duì)emp表進(jìn)行的部分?jǐn)?shù)據(jù)掃描,并利用了deptno列的索引,所以語(yǔ)句B的效率要比語(yǔ)句A的效率高一些。 \x0d\x0a\x0d\x0a2、2、選擇聯(lián)合查詢的聯(lián)合次序。考慮下面的例子: \x0d\x0a\x0d\x0aSELECT stuff FROM taba a, tabb b, tabc c \x0d\x0a\x0d\x0aWHERE a.acol between :alow and :ahigh \x0d\x0a\x0d\x0aAND b.bcol between :blow and :bhigh \x0d\x0a\x0d\x0aAND c.ccol between :clow and :chigh \x0d\x0a\x0d\x0aAND a.key1 = b.key1 \x0d\x0a\x0d\x0aAMD a.key2 = c.key2; \x0d\x0a\x0d\x0a這個(gè)SQL例子中,程序員首先需要選擇要查詢的主表,因?yàn)橹鞅硪M(jìn)行整個(gè)表數(shù)據(jù)的掃描,所以主表應(yīng)該數(shù)據(jù)量最小,所以例子中表A的acol列的范圍應(yīng)該比表B和表C相應(yīng)列的范圍小。 \x0d\x0a\x0d\x0a3、3、在子查詢中慎重使用IN或者NOT IN語(yǔ)句,使用where (NOT) exists的效果要好的多。 \x0d\x0a\x0d\x0a4、4、慎重使用視圖的聯(lián)合查詢,尤其是比較復(fù)雜的視圖之間的聯(lián)合查詢。一般對(duì)視圖的查詢更好都分解為對(duì)數(shù)據(jù)表的直接查詢效果要好一些。 \x0d\x0a\x0d\x0a5、5、可以在參數(shù)文件中設(shè)置SHARED_POOL_RESERVED_SIZE參數(shù),這個(gè)參數(shù)在SGA共享池中保留一個(gè)連續(xù)的內(nèi)存空間,連續(xù)的內(nèi)存空間有益于存放大的SQL程序包。 \x0d\x0a\x0d\x0a6、6、ORACLE公司提供的DBMS_SHARED_POOL程序可以幫助程序員將某些經(jīng)常使用的存儲(chǔ)過程“釘”在SQL區(qū)中而不被換出內(nèi)存,程序員對(duì)于經(jīng)常使用并且占用內(nèi)存很多的存儲(chǔ)過程“釘”到內(nèi)存中有利于提高最終用戶的響應(yīng)時(shí)間。 \x0d\x0a\x0d\x0aCPU參數(shù)的調(diào)整 \x0d\x0a\x0d\x0aCPU是服務(wù)器的一項(xiàng)重要資源,服務(wù)器良好的工作狀態(tài)是在工作高峰時(shí)CPU的使用率在90%以上。如果空閑時(shí)間CPU使用率就在90%以上,說明服務(wù)器缺乏CPU資源,如果工作高峰時(shí)CPU使用率仍然很低,說明服務(wù)器CPU資源還比較富余。 \x0d\x0a\x0d\x0a使用操作相同命令可以看到CPU的使用情況,一般UNIX操作系統(tǒng)的服務(wù)器,可以使用sar _u命令查看CPU的使用率,NT操作系統(tǒng)的服務(wù)器,可以使用NT的性能管理器來查看CPU的使用率。 \x0d\x0a\x0d\x0a數(shù)據(jù)庫(kù)管理員可以通過查看v$sysstat數(shù)據(jù)字典中“CPU used by this session”統(tǒng)計(jì)項(xiàng)得知ORACLE數(shù)據(jù)庫(kù)使用的CPU時(shí)間,查看“OS User level CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)用戶態(tài)下的CPU時(shí)間,查看“OS System call CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)系統(tǒng)態(tài)下的CPU時(shí)間,操作系統(tǒng)總的CPU時(shí)間就是用戶態(tài)和系統(tǒng)態(tài)時(shí)間之和,如果ORACLE數(shù)據(jù)庫(kù)使用的CPU時(shí)間占操作系統(tǒng)總的CPU時(shí)間90%以上,說明服務(wù)器CPU基本上被ORACLE數(shù)據(jù)庫(kù)使用著,這是合理,反之,說明服務(wù)器CPU被其它程序占用過多,ORACLE數(shù)據(jù)庫(kù)無法得到更多的CPU時(shí)間。 \x0d\x0a\x0d\x0a數(shù)據(jù)庫(kù)管理員還可以通過查看v$sesstat數(shù)據(jù)字典來獲得當(dāng)前連接ORACLE數(shù)據(jù)庫(kù)各個(gè)會(huì)話占用的CPU時(shí)間,從而得知什么會(huì)話耗用服務(wù)器CPU比較多。 \x0d\x0a\x0d\x0a出現(xiàn)CPU資源不足的情況是很多的:SQL語(yǔ)句的重解析、低效率的SQL語(yǔ)句、鎖沖突都會(huì)引起CPU資源不足。 \x0d\x0a\x0d\x0a1、數(shù)據(jù)庫(kù)管理員可以執(zhí)行下述語(yǔ)句來查看SQL語(yǔ)句的解析情況: \x0d\x0a\x0d\x0aSELECT * FROM V$SYSSTAT \x0d\x0a\x0d\x0aWHERE NAME IN \x0d\x0a\x0d\x0a(‘parse time cpu’, ‘parse time elapsed’, ‘parse count (hard)’); \x0d\x0a\x0d\x0a這里parse time cpu是系統(tǒng)服務(wù)時(shí)間,parse time elapsed是響應(yīng)時(shí)間,用戶等待時(shí)間 \x0d\x0a\x0d\x0awaite time = parse time elapsed _ parse time cpu \x0d\x0a\x0d\x0a由此可以得到用戶SQL語(yǔ)句平均解析等待時(shí)間=waite time / parse count。這個(gè)平均等待時(shí)間應(yīng)該接近于0,如果平均解析等待時(shí)間過長(zhǎng),數(shù)據(jù)庫(kù)管理員可以通過下述語(yǔ)句 \x0d\x0a\x0d\x0aSELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA \x0d\x0a\x0d\x0aORDER BY PARSE_CALLS; \x0d\x0a\x0d\x0a來發(fā)現(xiàn)是什么SQL語(yǔ)句解析效率比較低。程序員可以優(yōu)化這些語(yǔ)句,或者增加ORACLE參數(shù)SESSION_CACHED_CURSORS的值。 \x0d\x0a\x0d\x0a2、數(shù)據(jù)庫(kù)管理員還可以通過下述語(yǔ)句: \x0d\x0a\x0d\x0aSELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA; \x0d\x0a\x0d\x0a查看低效率的SQL語(yǔ)句,優(yōu)化這些語(yǔ)句也有助于提高CPU的利用率。 \x0d\x0a\x0d\x0a3、3、數(shù)據(jù)庫(kù)管理員可以通過v$system_event數(shù)據(jù)字典中的“l(fā)atch free”統(tǒng)計(jì)項(xiàng)查看ORACLE數(shù)據(jù)庫(kù)的沖突情況,如果沒有沖突的話,latch free查詢出來沒有結(jié)果。如果沖突太大的話,數(shù)據(jù)庫(kù)管理員可以降低spin_count參數(shù)值,來消除高的CPU使用率。 \x0d\x0a\x0d\x0a內(nèi)存參數(shù)的調(diào)整 \x0d\x0a\x0d\x0a內(nèi)存參數(shù)的調(diào)整主要是指ORACLE數(shù)據(jù)庫(kù)的系統(tǒng)全局區(qū)(SGA)的調(diào)整。SGA主要由三部分構(gòu)成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。 \x0d\x0a\x0d\x0a1、 1、 共享池由兩部分構(gòu)成:共享SQL區(qū)和數(shù)據(jù)字典緩沖區(qū),共享SQL區(qū)是存放用戶SQL命令的區(qū)域,數(shù)據(jù)字典緩沖區(qū)存放數(shù)據(jù)庫(kù)運(yùn)行的動(dòng)態(tài)信息。數(shù)據(jù)庫(kù)管理員通過執(zhí)行下述語(yǔ)句: \x0d\x0a\x0d\x0aselect (sum(pins – reloads)) / sum(pins) “Lib Cache” from v$librarycache; \x0d\x0a\x0d\x0a來查看共享SQL區(qū)的使用率。這個(gè)使用率應(yīng)該在90%以上,否則需要增加共享池的大小。數(shù)據(jù)庫(kù)管理員還可以執(zhí)行下述語(yǔ)句: \x0d\x0a\x0d\x0aselect (sum(gets – getmisses – usage – fixed)) / sum(gets) “Row Cache” from v$rowcache; \x0d\x0a\x0d\x0a查看數(shù)據(jù)字典緩沖區(qū)的使用率,這個(gè)使用率也應(yīng)該在90%以上,否則需要增加共享池的大小。 \x0d\x0a\x0d\x0a2、 2、 數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)庫(kù)管理員可以通過下述語(yǔ)句: \x0d\x0a\x0d\x0aSELECT name, value FROM v$sysstat WHERE name IN (‘db block gets’, ‘consistent gets’,’physical reads’); \x0d\x0a\x0d\x0a來查看數(shù)據(jù)庫(kù)數(shù)據(jù)緩沖區(qū)的使用情況。查詢出來的結(jié)果可以計(jì)算出來數(shù)據(jù)緩沖區(qū)的使用命中率=1 – ( physical reads / (db block gets + consistent gets) )。 \x0d\x0a\x0d\x0a這個(gè)命中率應(yīng)該在90%以上,否則需要增加數(shù)據(jù)緩沖區(qū)的大小。 \x0d\x0a\x0d\x0a3、 3、 日志緩沖區(qū)。數(shù)據(jù)庫(kù)管理員可以通過執(zhí)行下述語(yǔ)句: \x0d\x0a\x0d\x0aselect name,value from v$sysstat where name in (‘redo entries’,’redo log space requests’);查看日志緩沖區(qū)的使用情況。查詢出的結(jié)果可以計(jì)算出日志緩沖區(qū)的申請(qǐng)失敗率: \x0d\x0a\x0d\x0a申請(qǐng)失敗率=requests/entries,申請(qǐng)失敗率應(yīng)該接近于0,否則說明日志緩沖區(qū)開設(shè)太小,需要增加ORACLE數(shù)據(jù)庫(kù)的日志緩沖區(qū)。
oracle數(shù)據(jù)庫(kù) 性能的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于oracle數(shù)據(jù)庫(kù) 性能,優(yōu)化技巧,怎樣保持Oracle數(shù)據(jù)庫(kù)SQL性能的穩(wěn)定性,影響數(shù)據(jù)庫(kù)性能的主要因素有哪些?的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
標(biāo)題名稱:優(yōu)化技巧(oracle數(shù)據(jù)庫(kù)性能)
鏈接分享:http://m.fisionsoft.com.cn/article/dpgcooe.html


咨詢
建站咨詢
