国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ORACLE 10g數(shù)據(jù)庫(kù)性能優(yōu)化與分析

2013-12-29 00:00:00付海龍祝永志
電腦知識(shí)與技術(shù) 2013年13期

摘要:隨著數(shù)據(jù)庫(kù)在生活中各個(gè)領(lǐng)域中的廣泛應(yīng)用,數(shù)據(jù)庫(kù)產(chǎn)品也層出不窮。其中,ORACLE數(shù)據(jù)庫(kù)產(chǎn)品在整個(gè)數(shù)據(jù)庫(kù)產(chǎn)品的應(yīng)用中占據(jù)50%,并且有不斷上升的趨勢(shì)??墒?,隨著數(shù)據(jù)庫(kù)數(shù)據(jù)量的增大、并發(fā)用戶數(shù)量增多,系統(tǒng)常常出現(xiàn)吞吐量降低,響應(yīng)時(shí)間延長(zhǎng)等性能問(wèn)題,怎樣有效優(yōu)化、改善數(shù)據(jù)庫(kù)性能,突破系統(tǒng)瓶頸,是保證 Oracle 數(shù)據(jù)庫(kù)高效運(yùn)行的基礎(chǔ)。Oracle 數(shù)據(jù)庫(kù)系統(tǒng)性能優(yōu)化、調(diào)整是一項(xiàng)復(fù)雜的系統(tǒng)工程,貫穿于系統(tǒng)的整個(gè)生存周期中。

關(guān)鍵詞:ORACLE數(shù)據(jù)庫(kù);性能優(yōu)化;索引;sql語(yǔ)句

中圖分類號(hào): TP311 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào):1009-3044(2013)13-2943-03

1 概述

數(shù)據(jù)庫(kù)優(yōu)化不僅僅是DBA(數(shù)據(jù)庫(kù)管理員)的事情,它也是設(shè)計(jì)人員、應(yīng)用開發(fā)人員必須做的事情。有人認(rèn)為,優(yōu)化數(shù)據(jù)庫(kù)不用著急,在系統(tǒng)出現(xiàn)宕機(jī)或者慢到無(wú)法忍受時(shí)再優(yōu)化不遲。但此時(shí),往往無(wú)法有效的對(duì)相應(yīng)的數(shù)據(jù)庫(kù)進(jìn)行更為有效的優(yōu)化。所以我們應(yīng)當(dāng)在整個(gè)數(shù)據(jù)庫(kù)的生命周期中,給予不斷地優(yōu)化,以使數(shù)據(jù)庫(kù)達(dá)到最好的性能[1]。

2 數(shù)據(jù)庫(kù)系統(tǒng)性能評(píng)價(jià)指標(biāo)

2.1 系統(tǒng)吞吐量

2.2 響應(yīng)時(shí)間

響應(yīng)時(shí)間是,在用戶提交任務(wù)要求到數(shù)據(jù)庫(kù)做出回應(yīng)的時(shí)間。其實(shí)質(zhì)就是,終端客戶等待后臺(tái)處理所花費(fèi)的時(shí)間[2]。因此響應(yīng)時(shí)間優(yōu)化的重要性不言而喻。調(diào)查顯示,當(dāng)用戶等待一項(xiàng)任務(wù)的響應(yīng)時(shí)間超過(guò)幾秒鐘時(shí),用戶可能就會(huì)對(duì)此系統(tǒng)產(chǎn)生不滿或者厭煩的情緒。因此,我們必須通過(guò)優(yōu)化,將響應(yīng)時(shí)間降到最低。

2.3 數(shù)據(jù)庫(kù)的命中率

數(shù)據(jù)庫(kù)命中率是數(shù)據(jù)庫(kù)性能中非常重要的評(píng)價(jià)指標(biāo),包括數(shù)據(jù)庫(kù)緩沖區(qū)命中率和共享池命中率。緩沖區(qū)命中率是指用戶需求的數(shù)據(jù)是否存放在在內(nèi)存中,該命中率是指高速緩存命中總數(shù)除以高速緩存的查找總數(shù);共享池命中率決定了用戶提交的 SQL語(yǔ)句是否需要進(jìn)行重新解析,該比率等于 SQL 語(yǔ)句的解析次數(shù)除以SQL語(yǔ)句總的執(zhí)行次數(shù)。通常情況,數(shù)據(jù)庫(kù)的命中率應(yīng)該在 90%左右,低于這個(gè)值的系統(tǒng)均需要做出優(yōu)化和調(diào)整[3]。

3 幾種數(shù)據(jù)庫(kù)的優(yōu)化方法

3.1 系統(tǒng)(硬件和操作系統(tǒng))優(yōu)化方案

1)硬件的優(yōu)化方案

對(duì)于優(yōu)化,通常來(lái)講,對(duì)硬件的升級(jí)是比較常見的手段。據(jù)調(diào)查,對(duì)內(nèi)存、硬件、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)參數(shù)、操作系統(tǒng)進(jìn)行調(diào)整,可以提供數(shù)據(jù)庫(kù)系統(tǒng)性能將近一半的提升 。硬件的優(yōu)化主要包括:將CPU升級(jí)更高的頻率,采用多磁盤,擴(kuò)大內(nèi)存的容量,改善帶寬的I/O性能等等。

這里我們簡(jiǎn)要介紹一下對(duì)內(nèi)存參數(shù)的調(diào)整。內(nèi)存參數(shù)的調(diào)整主要是對(duì)ORACLE數(shù)據(jù)庫(kù)中系統(tǒng)全局區(qū)的調(diào)整。系統(tǒng)全局變量主要由三部分構(gòu)成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。

2)操作系統(tǒng)的優(yōu)化方案

操作系統(tǒng)性能對(duì)數(shù)據(jù)庫(kù)的使用性能起到了決定性的作用,假如操作系統(tǒng)配置不完善,那么只對(duì) Oracle 數(shù)據(jù)庫(kù)內(nèi)部性能調(diào)整是不會(huì)提高系統(tǒng)性能的,所以oracle服務(wù)器使用資源的大小,必須與服務(wù)器的硬件資源相結(jié)合。在對(duì) Oracle 數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行診斷和調(diào)整時(shí),首先應(yīng)通過(guò)操作系統(tǒng)的相關(guān)命令,檢查 CPU、內(nèi)存、磁盤及網(wǎng)絡(luò)環(huán)境。例如在 Windows2000 下:禁止不必要的網(wǎng)絡(luò)協(xié)議;可以使用性能監(jiān)視器來(lái)監(jiān)視 Windows 下的 Oracle 內(nèi)存使用;利用 Windows進(jìn)行內(nèi)存調(diào)優(yōu)等。

3.2 運(yùn)用索引技術(shù)

建立索引是優(yōu)化數(shù)據(jù)庫(kù)中一個(gè)非常重要的步驟,也是優(yōu)化查詢最為重要的方法, 數(shù)據(jù)庫(kù)索引好比是一本書前面的目錄,能加快數(shù)據(jù)庫(kù)的查詢速度。運(yùn)用索引也可以省去表掃描,并且可以減少因查詢而造成的系統(tǒng) I/O的開銷,大大提高數(shù)據(jù)庫(kù)查詢的速度,并改善數(shù)據(jù)庫(kù)的性能。但是創(chuàng)建索引會(huì)增加系統(tǒng)的時(shí)間和空間的開銷。因此創(chuàng)建索引時(shí)必須要與實(shí)現(xiàn)應(yīng)用系統(tǒng)的查詢需求密切結(jié)合,才能達(dá)到優(yōu)化查詢的目的。

在實(shí)際操作中, 我們通常是先考察sql所有的語(yǔ)句,并通過(guò)統(tǒng)計(jì),選中其中常用的并且可能對(duì)性能產(chǎn)生影響的語(yǔ)句,對(duì)其進(jìn)行分析,歸納出WHERE 條件子句的字段,以及各種組合方式;這樣,就基本可以初步判斷出我們應(yīng)該在哪些表的哪些字段建立起索引。

3.3 SQL 語(yǔ)句的優(yōu)化

在程序設(shè)計(jì)中的一個(gè)著名定律:20% 的代碼用去了 80% 的時(shí)間。在數(shù)據(jù)庫(kù)應(yīng)用程序中也同樣如此。對(duì)于數(shù)據(jù)庫(kù)應(yīng)用程序來(lái)說(shuō), SQL 語(yǔ)句的優(yōu)化是提高應(yīng)用程序效率的重要因素[4]。

在進(jìn)行sql語(yǔ)句優(yōu)化的時(shí)候,我們要注意以下幾點(diǎn):

1)盡可能降低對(duì)數(shù)據(jù)庫(kù)的使用頻率,可以通過(guò)顯性圖或者快照等分布式數(shù)據(jù)庫(kù)對(duì)象來(lái)實(shí)現(xiàn)。

2)盡可能的在建表的sql語(yǔ)句中來(lái)描述表中數(shù)據(jù)的約束,而不要在sql的程序中實(shí)現(xiàn)。

3)取消自動(dòng)提交模式,將sql語(yǔ)句匯集一組,然后集中提交,并且程序還可以通過(guò)顯式的用commit和rollback進(jìn)行提交、并回滾該事務(wù)。

4)當(dāng)檢索大量的數(shù)據(jù)時(shí),往往花費(fèi)很長(zhǎng)的時(shí)間,所以要通過(guò)進(jìn)行設(shè)置行預(yù)取數(shù),可以明顯的提高系統(tǒng)的性能。當(dāng)sql語(yǔ)句返回值超過(guò)我們?cè)O(shè)置的最大值時(shí),讓數(shù)據(jù)庫(kù)在用戶發(fā)出新指令之前暫停執(zhí)行,及時(shí)的組織并顯示需要的數(shù)據(jù)。

在sql語(yǔ)句中,由于where語(yǔ)句使用的普遍性,對(duì)where語(yǔ)句的優(yōu)化顯得尤為重要。下面就對(duì)SQL語(yǔ)句的where子句中需要注意的問(wèn)題作詳細(xì)介紹。在這些where子句中,即使某些列存在索引,但是由于編寫了劣質(zhì)的SQL,系統(tǒng)在運(yùn)行該SQL語(yǔ)句時(shí)也不能使用該索引,而同樣使用全表掃描,這就造成了響應(yīng)速度的極大降低。

3.3.1 IS NULL 與 IS NOT NULL 語(yǔ)句

在有NULL(空)和 IS NOT NULL(非空)的語(yǔ)句中。只要包含 NULL 值的列,都不會(huì)被包含在索引之中。也就是說(shuō),在運(yùn)用索引時(shí),只要是發(fā)現(xiàn)某列存在 NULL 值,該列就會(huì)被剔除,即使對(duì)該列建索引也不會(huì)提高性能。只要在where的子句中使用空或非空的語(yǔ)句,那么優(yōu)化器是不會(huì)使用索引的。所以只能適當(dāng)采用其他方法。

3.3.2 聯(lián)接列

對(duì)于有聯(lián)接的列,即使最后的聯(lián)接值為一個(gè)靜態(tài)值,優(yōu)化器是不會(huì)使用索引的。舉個(gè)例子,假定有一個(gè)職工表(employee),對(duì)于一個(gè)職工的姓和名分成兩列存放(FIRST_NAME和LAST_NAME),現(xiàn)在要查詢一個(gè)叫科比·布萊恩特(Koby Bryant)的職工。

當(dāng)采用下面這種SQL語(yǔ)句的編寫,Oracle系統(tǒng)就可以采用基于last_name創(chuàng)建的索引.

4 結(jié)束語(yǔ)

Oracle 10g數(shù)據(jù)庫(kù)系統(tǒng)性能優(yōu)化與調(diào)整是一個(gè)復(fù)雜、繁瑣的系統(tǒng)工程,貫穿于數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)的整個(gè)過(guò)程。數(shù)據(jù)庫(kù)系統(tǒng)配置的調(diào)整,包括內(nèi)存結(jié)構(gòu)調(diào)整、磁盤 I/O 調(diào)整以及應(yīng)用程序優(yōu)化等,直接決定了整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的性能,應(yīng)該利用各種性能優(yōu)化手段進(jìn)行反復(fù)的調(diào)整、比較以消除瓶頸,獲得系統(tǒng)最優(yōu)性能。

參考文獻(xiàn):

[1] 朱丹輝.基于ORACLE 的數(shù)據(jù)庫(kù)性能優(yōu)化探討[J].就業(yè)與保障,2012(11):33-34.

[2] 肖軍.ORACLE數(shù)據(jù)庫(kù)性能調(diào)整與優(yōu)化[D].武漢:武漢大學(xué),2004.

[3] 任艷.Oracle 數(shù)據(jù)庫(kù)性能調(diào)整與優(yōu)化技術(shù)探討[J].中國(guó)新通信,2013(2):3-4.

[4] 張靜,張雨,許春艷.基于 Oracle 數(shù)據(jù)庫(kù)的查詢優(yōu)化技術(shù)[J].科技創(chuàng)新導(dǎo)報(bào),2009(6):26.

[5] 王妍.Oracle數(shù)據(jù)庫(kù)的優(yōu)化設(shè)計(jì)[J].中國(guó)科技信息,2012(23):85.

[6] 王慧清.Oracle數(shù)據(jù)庫(kù)應(yīng)用中出現(xiàn)的問(wèn)題及其對(duì)策[J].中國(guó)新通信,2013:2-4.

[7] Rick Greenwald. Professional Oracle Programming[M].Widely Publishing,inc.

交城县| 沂水县| 高雄县| 固阳县| 香格里拉县| 蓝田县| 安达市| 娱乐| 逊克县| 蓬莱市| 延长县| 长海县| 内江市| 西吉县| 昌吉市| 科技| 东乌珠穆沁旗| 双流县| 舞钢市| 玉山县| 长葛市| 临夏市| 奈曼旗| 平凉市| 扶风县| 东平县| 高淳县| 台南市| 海原县| 浙江省| 新闻| 田东县| 新乡市| 镶黄旗| 荣昌县| 门源| 隆昌县| 大关县| 尼木县| 香河县| 界首市|