新聞中心
隨著企業(yè)數(shù)據(jù)量的不斷增加,數(shù)據(jù)庫的負(fù)載也越來越大,如何在高負(fù)載狀態(tài)下有效地查詢數(shù)據(jù)成為了DBA們的一項(xiàng)常規(guī)任務(wù)。本文將分享一些oracle數(shù)據(jù)庫負(fù)載查詢技巧,幫助DBA們更好地應(yīng)對高負(fù)載狀態(tài)。

成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元三江侗做網(wǎng)站,已為上家服務(wù),為三江侗各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
1.利用AWR報(bào)告
AWR報(bào)告是Oracle數(shù)據(jù)庫性能診斷的重要工具之一,通過AWR報(bào)告可以了解數(shù)據(jù)庫的負(fù)載狀況。其中,load profile表格中的數(shù)據(jù)可以幫助DBA快速了解當(dāng)前數(shù)據(jù)庫的負(fù)載情況。
load profile表格包含了如下信息:
– Per Second: 每秒鐘執(zhí)行的數(shù)據(jù)庫事務(wù)數(shù)
– Per Transaction: 每個(gè)事務(wù)所占用的CPU時(shí)間
– CPU Usage: 數(shù)據(jù)庫使用CPU的總量
– Memory Usage: 數(shù)據(jù)庫使用的內(nèi)存總量
– IO Usage: 數(shù)據(jù)庫使用的IO總量
在高負(fù)載狀態(tài)下,load profile表格的Per Second和Per Transaction字段的值可能會(huì)非常高,這意味著數(shù)據(jù)庫的性能受到了極大的影響。因此,DBA們可以利用AWR報(bào)告了解數(shù)據(jù)庫的負(fù)載狀況,并根據(jù)實(shí)際情況選取合適的優(yōu)化手段。
2.利用TOP命令
在Linux環(huán)境下,DBA們可以利用TOP命令查看當(dāng)前系統(tǒng)的負(fù)載情況。TOP命令會(huì)列出當(dāng)前進(jìn)程的CPU和內(nèi)存消耗情況,并按照消耗量從大到小排序。通過TOP命令,DBA們可以了解當(dāng)前系統(tǒng)的瓶頸所在,從而采取相應(yīng)的優(yōu)化措施。
下面是一個(gè)例子:
top – 13:50:39 up 5 days, 19:05, 5 users, load average: 5.02, 4.43, 4.26
Tasks: 395 total, 3 running, 392 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.2 us, 1.6 sy, 0.0 ni, 84.9 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 4043872 total, 2370476 free, 257008 used, 1423388 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3670500 avl Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1785 oracle 20 0 67.766g 3.624g 3.568g S 10.0 95.4 952:03.69 oracle
1031 root 20 0 0 0 0 D 4.7 0.0 7:49.08 jbd2/sda1-8
1555 root 0 -20 0 0 0 D 2.0 0.0 2:02.46 mpt_poll_0
1479 root -51 0 0 0 0 S 1.3 0.0 61:34.60 irq/130-HP H22
1272 polkitd 20 0 499216 11780 4296 S 0.7 0.3 158:40.46 polkitd
2389 root 20 0 0 0 0 S 0.3 0.0 0:01.64 kworker/4:1
2361 root 20 0 0 0 0 S 0.3 0.0 0:01.67 kworker/5:1
2417 root 20 0 0 0 0 S 0.3 0.0 0:01.11 kworker/6:1
1464 root -51 0 0 0 0 S 0.3 0.0 60:51.02 irq/129-HP H22
1 root 20 0 194104 7688 5716 S 0.0 0.2 0:04.10 systemd
在上面的例子中,load average顯示當(dāng)前系統(tǒng)的負(fù)載情況,%Cpu(s)顯示CPU的使用情況,而下面的表格顯示了當(dāng)前系統(tǒng)的進(jìn)程和它們的CPU和內(nèi)存消耗情況。從表格中可以看出,PID為1785的oracle進(jìn)程的CPU和內(nèi)存消耗量都非常高,這表明當(dāng)前數(shù)據(jù)庫的負(fù)載非常大。
3.利用SQL查詢
在Oracle數(shù)據(jù)庫中,DBA們可以通過以下SQL查詢獲取當(dāng)前會(huì)話的相關(guān)信息:
SELECT sid, serial#, status, program, username, osuser, machine, module, action, client_identifier, client_info FROM v$session WHERE username IS NOT NULL;
以上SQL查詢可以用來查詢當(dāng)前所有正在運(yùn)行的會(huì)話,其中各個(gè)字段的含義如下:
– sid: 會(huì)話ID
– serial#: 會(huì)話序號(hào)
– status: 會(huì)話狀態(tài)
– program: 客戶端運(yùn)行的程序
– username: 登錄會(huì)話的用戶名
– osuser: 登錄會(huì)話的操作系統(tǒng)用戶名
– machine: 登錄會(huì)話的主機(jī)名
– module: 客戶端模塊名稱
– action: 客戶端動(dòng)作名稱
– client_identifier: 客戶端標(biāo)識(shí)
– client_info: 客戶端信息
通過查詢上述信息,DBA們可以了解當(dāng)前數(shù)據(jù)庫的會(huì)話情況,從而針對性地應(yīng)用優(yōu)化措施。
:
Oracle數(shù)據(jù)庫的負(fù)載是DBA們關(guān)注的焦點(diǎn),通過利用AWR報(bào)告、TOP命令和SQL查詢等技巧,可以快速地查詢數(shù)據(jù)庫的負(fù)載情況,并根據(jù)實(shí)際情況采取相應(yīng)的優(yōu)化措施,保證數(shù)據(jù)庫的高性能和穩(wěn)定運(yùn)行。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
數(shù)據(jù)庫是什么?Oracle又是啥玩意?
經(jīng)常會(huì)有人問我數(shù)據(jù)庫是干啥的,其實(shí)一開始我是拒絕回答的,因?yàn)槲乙膊荒茏龅酵ㄋ滓锥谋磉_(dá)出來,畢竟我接觸這個(gè)概念也沒有多長時(shí)間,但隨著問的人多了,我覺得是時(shí)候腦補(bǔ)一下我的之一堂課了,萬一哪天冒出來個(gè)貨跟你掰扯這事兒,你沒分分鐘給他說清,最后弄個(gè)丟里兒丟面兒,好尷尬呀。
數(shù)據(jù)庫,說白了就是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉庫,這些數(shù)據(jù)是結(jié)構(gòu)化的,并可為多種應(yīng)用服務(wù)。也就是說,數(shù)據(jù)庫是使用計(jì)算機(jī)服務(wù)器來存儲(chǔ)數(shù)據(jù)的,專門用來提供各種數(shù)據(jù)服務(wù)??梢赃@樣想像,過去一個(gè)公司的所有財(cái)務(wù)數(shù)據(jù)都是放在保險(xiǎn)柜里面,而現(xiàn)在我們就可以針對這些財(cái)務(wù)數(shù)據(jù)搭建一個(gè)數(shù)據(jù)庫放在某臺(tái)計(jì)算機(jī)或服務(wù)器上面;再比如,企業(yè)或事業(yè)單位的人事部門常常要把本單位職工的基本情況(職工號(hào)、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個(gè)數(shù)據(jù)庫。有了這個(gè)”數(shù)據(jù)倉庫”我們就可以根據(jù)需要隨時(shí)查詢某職工的基本情況,也可以查詢工資在某個(gè)范圍內(nèi)的職工人數(shù)等等。這些工作如果都能在計(jì)算機(jī)上自動(dòng)進(jìn)行,那我們的人事管理就可以達(dá)到極高的水平。此外,在財(cái)務(wù)管理、倉庫管理、生產(chǎn)管理中也需要建立眾多的這種”數(shù)據(jù)庫”,使其可以利用計(jì)算機(jī)實(shí)現(xiàn)財(cái)務(wù)、倉庫、生產(chǎn)的自動(dòng)化管理。最常見的數(shù)據(jù)庫有:銀行儲(chǔ)蓄系統(tǒng)、手機(jī)話費(fèi)系統(tǒng)、美容美發(fā)會(huì)員系統(tǒng)、超市會(huì)員積分系統(tǒng)、水電費(fèi)系統(tǒng)、機(jī)票或火車票系統(tǒng)等,這些都需要后臺(tái)數(shù)據(jù)庫基礎(chǔ)設(shè)施的支撐。舉了這么多例子,應(yīng)該是把數(shù)據(jù)庫說明白了,至少能在大腦里面有個(gè)概念,知道這個(gè)東西是干啥的。
現(xiàn)在大數(shù)據(jù)被炒的紅得發(fā)紫,而大數(shù)據(jù)的基礎(chǔ)也是數(shù)據(jù),由此可見,數(shù)據(jù)是一個(gè)企業(yè)的核心資源,說它是企業(yè)的立身之本、發(fā)展之基都不為過,因此,維護(hù)數(shù)據(jù)庫的數(shù)據(jù)庫管理員(DBA)是企業(yè)不可或缺的。
目前市面上的數(shù)據(jù)庫產(chǎn)品有很多,單從規(guī)模上分可分為大型、中型、小型幾種,典型的數(shù)據(jù)庫產(chǎn)品如下:
大型數(shù)據(jù)庫:Oracle、DB2、Sybase;
中型數(shù)據(jù)庫:MySQL、SQLServer、Infomix;
小型數(shù)據(jù)庫:Access、VisualFoxpro。在眾多的數(shù)據(jù)庫產(chǎn)品中,Oracle數(shù)據(jù)庫一直處于行業(yè)領(lǐng)導(dǎo)先地位,也是當(dāng)今更流行的關(guān)系型數(shù)據(jù)庫。Oracle可翻譯成”甲骨文”,它是一家以數(shù)據(jù)庫為主業(yè)的全球化公司,是全球第二大軟件公司(之一名是微軟公司),目前Oracle在數(shù)據(jù)庫軟件市場已經(jīng)排名之一,數(shù)據(jù)庫軟件市場份額達(dá)到48.6%,遙遙領(lǐng)先于第二名占有率僅為20.7%的IBM公司的DB2。在中國市場上的計(jì)算機(jī)專業(yè)系統(tǒng)后臺(tái)所使用的數(shù)據(jù)庫尤以O(shè)racle數(shù)據(jù)庫居多。但是購買Oracle數(shù)據(jù)庫需要很大一筆費(fèi)用,一般的大型企業(yè)使用,需要有專業(yè)人員進(jìn)行管理和維護(hù),中小企業(yè)承擔(dān)不起。中小企業(yè)為了節(jié)省成本,一般使用MySQL、PostgreSQL這類免費(fèi)開源的數(shù)據(jù)庫,所以O(shè)racle數(shù)據(jù)庫相關(guān)的工作崗位一般是在大型企業(yè)中。
對于為什么選擇Oracle數(shù)據(jù)庫,而不是其他的數(shù)據(jù)庫?
之一,是因?yàn)镺racle數(shù)據(jù)庫占據(jù)更大的市場份額,并且越來越大,市場需要很多Oracle數(shù)據(jù)庫方面的人才,中國有句老話說”做對事,選對人”,是同樣的道理;第二,是很多非Oracle數(shù)據(jù)庫的老系統(tǒng)正往Oracle數(shù)據(jù)庫遷移,其他數(shù)據(jù)庫市場占有率在減少,其他數(shù)據(jù)庫工作者有面臨失業(yè)的風(fēng)險(xiǎn);第三,Oracle有大量的官方學(xué)習(xí)文檔,還有部分中文文檔,可以有效地進(jìn)行學(xué)習(xí);第四,Oracle有大量的從業(yè)人員,有共同方向的朋友可以互相幫助,不再是孤膽英雄;第五,是可以很容易地從Oracle官方網(wǎng)站下載功能齊全的數(shù)據(jù)庫最新版本進(jìn)行學(xué)習(xí),可以讓你了解數(shù)據(jù)庫方面的最新發(fā)展趨勢等。
在此說明,以后的所有內(nèi)容都是基于Oracle11g數(shù)據(jù)庫產(chǎn)品的,下面我們就簡單介紹一下Oracle11g的系列產(chǎn)品:
企業(yè)版(EnterpriseEdition)此版本包含了數(shù)據(jù)庫的所有組件,并且能夠通過購買選項(xiàng)和程序包來進(jìn)一步對其增強(qiáng)。
能支持例如大業(yè)務(wù)量的在線事務(wù)處理OLTP(On-LineTransactionProcessing聯(lián)機(jī)事務(wù)處理系統(tǒng))環(huán)境、查詢密集的數(shù)據(jù)倉庫和要求苛刻的互聯(lián)網(wǎng)應(yīng)用程序。
標(biāo)準(zhǔn)版1(StandardEditionOne)此版本為工作組、部門級和互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)應(yīng)用程序提供了前所未有的易用性和性價(jià)比。從針對小型商務(wù)的單服務(wù)器環(huán)境到大型的分布式部門環(huán)境,該版本包含了構(gòu)建重要商務(wù)應(yīng)用程序所必需的全部工具。它僅許可在更高容量為2個(gè)處理器的服務(wù)器上使用,支持Windows/Linux/UNIX操作系統(tǒng),并支持64位平臺(tái)操作系統(tǒng)。
標(biāo)準(zhǔn)版(StandardEdition)此版本提供了StandardEditionOne所不具有的易用性、能力和性能,并且利用真正的應(yīng)用集群(RAC)提供了對更大型計(jì)算機(jī)和服務(wù)集群的支持。它可以在更高容量為4個(gè)處理器的單臺(tái)服務(wù)器上、或者在一個(gè)支持最多4個(gè)處理器的集群上使用,可支持Windows、Linux和UNIX操作系統(tǒng),并支持64位平臺(tái)操作系統(tǒng)。
簡化版此版本支持與標(biāo)準(zhǔn)版1、標(biāo)準(zhǔn)版和企業(yè)版完全兼容的單用戶開發(fā)和部署。通過將Oracle數(shù)據(jù)庫獲獎(jiǎng)的功能引入到個(gè)人工作站中,該版本提供了結(jié)合世界上更流行的數(shù)據(jù)庫功能的數(shù)據(jù)庫,并且該數(shù)據(jù)庫具有桌面產(chǎn)品通常具有的易用性和簡單性,可支持Linux和Windows操作系統(tǒng)。
從存儲(chǔ)結(jié)構(gòu)上來說,目前流行的數(shù)據(jù)庫主要包含以下兩種:
RDBMS:關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫;
NoSQL數(shù)據(jù)庫,是指那些非關(guān)系型的、分布式的數(shù)據(jù)庫。簡單來說,關(guān)系模型指的就是二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織。
關(guān)系型數(shù)據(jù)庫優(yōu)點(diǎn):
1、容易理解
二維表結(jié)構(gòu)是非常貼近邏輯世界的一個(gè)概念,關(guān)系模型相對網(wǎng)狀、層次等其他模型來說更容易理解。
2、使用方便
通用的SQL語言使得操作關(guān)系型數(shù)據(jù)庫非常方便。
3、易于維護(hù)
豐富的完整性大大減低了數(shù)據(jù)冗余和數(shù)據(jù)部移植的概率。
4、事務(wù)安全
所有關(guān)系型數(shù)據(jù)庫都不同程度的遵守事物的四個(gè)基本屬性,因此對于銀行、電信、證券等交易型業(yè)務(wù)是不可或缺的。
關(guān)系型數(shù)據(jù)庫的瓶頸:
1、高并發(fā)讀寫需求
網(wǎng)站的用戶并發(fā)性非常高,往往達(dá)到每秒上萬次讀寫請求,對于傳統(tǒng)型數(shù)據(jù)庫來說,硬盤I/O是一個(gè)很大的瓶頸。
2、海量數(shù)據(jù)的高效率讀寫
互聯(lián)網(wǎng)上每天產(chǎn)生的數(shù)據(jù)量是巨大的,對于關(guān)系型數(shù)據(jù)庫來說,在一張包含海量數(shù)據(jù)的表中查詢,效率是非常低的。
3、高擴(kuò)展性和可用性
在基于WEB的結(jié)構(gòu)中,數(shù)據(jù)庫是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時(shí)候,數(shù)據(jù)庫卻沒有辦法像WEBServer和APPLICATIONServer那樣簡單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力。對于很多需要提供24小時(shí)不間斷服務(wù)的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)進(jìn)行升級和擴(kuò)展是非常痛苦的事情,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移。
NoSQL數(shù)據(jù)庫
NoSQL一詞首先是CarloStrozzi在1998年提出的。2023年再次提出了NoSQL一詞,用于指那些非關(guān)系型的、分布式的,且一般不保證遵循ACID原則的數(shù)據(jù)存儲(chǔ)系統(tǒng)。
NoSQL具有以下特點(diǎn):
1、可以彌補(bǔ)關(guān)系型數(shù)據(jù)庫的不足
2、針對某些特定的需求而設(shè)計(jì),可以具有極高的性能
3、大部分都是開源的,由于成熟度不夠,存在潛在的穩(wěn)定性和維護(hù)性問題。
關(guān)系型數(shù)據(jù)庫適用于結(jié)構(gòu)化數(shù)據(jù),而非關(guān)系型數(shù)據(jù)庫適用于非結(jié)構(gòu)化數(shù)據(jù),二者優(yōu)勢互補(bǔ),相得益彰。
Oracle數(shù)據(jù)庫未來的發(fā)展方向是提供結(jié)構(gòu)化、非結(jié)構(gòu)化、半結(jié)構(gòu)化的解決方案,實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫和NoSQL共存互補(bǔ)。值得強(qiáng)調(diào)的是,目前關(guān)系型數(shù)據(jù)庫仍是主流數(shù)據(jù)庫。
雖然NoSQL數(shù)據(jù)庫打破了關(guān)系型數(shù)據(jù)庫存儲(chǔ)的觀念,可以很好地滿足WEB2.0時(shí)代數(shù)據(jù)的存儲(chǔ)要求,但NoSQL數(shù)據(jù)庫也有自己的缺陷。在現(xiàn)階段的情況下,可以將關(guān)系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫結(jié)合使用,相互彌補(bǔ)各自的不足。
關(guān)于數(shù)據(jù)庫及其代表產(chǎn)品Oracle今天就介紹這么多,有興趣的可以繼續(xù)深挖,希望我的介紹能讓你對數(shù)據(jù)庫有一個(gè)更深入的認(rèn)識(shí)。如果有志于在這方面發(fā)展的話,就讓我們一起跟往事干杯從頭再來。
oracle在磁盤陣列上 兩臺(tái)服務(wù)器同時(shí)訪問,做負(fù)載均衡,如何實(shí)現(xiàn)?
你的意思就做oracle的RAC吧..
這個(gè)oracle的集群功能…就是兩臺(tái)生產(chǎn)機(jī)同時(shí)跑oracle的應(yīng)用然后寫入后端的存儲(chǔ)池中..是否這個(gè)意思呢?…
問題補(bǔ)充:在以DRDB+oracle的情況下是否可以實(shí)現(xiàn)oracle的負(fù)載均衡,而不需要肯定得在每臺(tái)機(jī)器上都裝上數(shù)據(jù)庫 磁盤陣列上是裝不了數(shù)據(jù)庫的 服務(wù)器之間,UEiHHH
數(shù)據(jù)庫性能優(yōu)化有哪些措施?
1、調(diào)整數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)
這一部分在開發(fā)信息系統(tǒng)之前完成,程序員需要考慮是否使用ORACLE數(shù)據(jù)庫的分區(qū)功能,對于經(jīng)常訪問的數(shù)據(jù)庫表是否需要建立索引等。
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ù)庫資源是不同的。
3、調(diào)整數(shù)據(jù)庫SQL語句
應(yīng)用程序的執(zhí)行最終將歸結(jié)為數(shù)據(jù)庫中的SQL語句執(zhí)行,因此SQL語句的執(zhí)行效率最終決定了ORACLE數(shù)據(jù)庫的性能。ORACLE公司推薦使用ORACLE語句優(yōu)化器(OracleOptimizer)和行鎖管理器(row-levelmanager)來調(diào)整優(yōu)化SQL語句。
4、調(diào)整服務(wù)器內(nèi)存分配
內(nèi)存分配是在信息系統(tǒng)運(yùn)行過程中優(yōu)化配置的,數(shù)據(jù)庫管理員可以根據(jù)數(shù)據(jù)庫運(yùn)行狀況調(diào)整數(shù)據(jù)庫系統(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)存的頁面交換,這樣反而會(huì)降低系統(tǒng)。
5、調(diào)整硬盤I/O
這一步是在信息系統(tǒng)開發(fā)之前完成的。數(shù)據(jù)庫管理員可以將組成同一個(gè)表空間的數(shù)據(jù)文件放在不同的硬盤上,做到硬盤之間I/O負(fù)載均衡。
6、調(diào)整操作系統(tǒng)參數(shù)
例如:運(yùn)行在UNIX操作系統(tǒng)上的ORACLE數(shù)據(jù)庫,可以調(diào)整UNIX數(shù)據(jù)緩沖池的大小,每個(gè)進(jìn)程所能使用的內(nèi)存大小等參數(shù)。
實(shí)際上,上述數(shù)據(jù)庫優(yōu)化措施之間是相互聯(lián)系的。ORACLE數(shù)據(jù)庫性能惡化表現(xiàn)基本上都是用戶響應(yīng)時(shí)間比較長,需要用戶長時(shí)間的等待。但性能惡化的原因卻是多種多樣的,有時(shí)是多個(gè)因素共同造成了性能惡化的結(jié)果,這就需要數(shù)據(jù)庫管理員有比較全面的計(jì)算機(jī)知識(shí),能夠敏感地察覺到影響數(shù)據(jù)庫性能的主要原因所在。另外,良好的數(shù)據(jù)庫管理工具對于優(yōu)化數(shù)據(jù)庫性能也是很重要的。
一、ORACLE數(shù)據(jù)庫性能優(yōu)化工具
常用的數(shù)據(jù)庫性能優(yōu)化工具有:
ORACLE數(shù)據(jù)庫在線數(shù)據(jù)字典,ORACLE在線數(shù)據(jù)字典能夠反映出ORACLE動(dòng)態(tài)運(yùn)行情況,對于調(diào)整數(shù)據(jù)庫性能是很有幫助的。
操作系統(tǒng)工具,例如UNIX操作系統(tǒng)的vmstat,iostat等命令可以查看到系統(tǒng)系統(tǒng)級內(nèi)存和硬盤I/O的使用情況,這些工具對于管理員弄清出系統(tǒng)瓶頸出現(xiàn)在什么地方有時(shí)候很有用。
SQL語言跟蹤工具(SQLTRACEFACILITY),SQL語言跟蹤工具可以記錄SQL語句的執(zhí)行情況,管理員可以使用虛擬表來調(diào)整實(shí)例,使用SQL語句跟蹤文件調(diào)整應(yīng)用程序性能。SQL語言跟蹤工具將結(jié)果輸出成一個(gè)操作系統(tǒng)的文件,管理員可以使用TKPROF工具查看這些文件。
ORACLEEnterpriseManager(OEM),這是一個(gè)圖形的用戶管理界面,用戶可以使用它方便地進(jìn)行數(shù)據(jù)庫管理而不必記住復(fù)雜的ORACLE數(shù)據(jù)庫管理的命令。
EXPLAINPLAN——SQL語言優(yōu)化命令,使用這個(gè)命令可以幫助程序員寫出高效的SQL語言。
二、ORACLE數(shù)據(jù)庫的系統(tǒng)性能評估
信息系統(tǒng)的類型不同,需要關(guān)注的數(shù)據(jù)庫參數(shù)也是不同的。數(shù)據(jù)庫管理員需要根據(jù)自己的信息系統(tǒng)的類型著重考慮不同的數(shù)據(jù)庫參數(shù)。
1、在線事務(wù)處理信息系統(tǒng)(OLTP),這種類型的信息系統(tǒng)一般需要有大量的Insert、Update操作,典型的系統(tǒng)包括民航機(jī)票發(fā)售系統(tǒng)、銀行儲(chǔ)蓄系統(tǒng)等。OLTP系統(tǒng)需要保證數(shù)據(jù)庫的并發(fā)性、可靠性和最終用戶的速度,這類系統(tǒng)使用的ORACLE數(shù)據(jù)庫需要主要考慮下述參數(shù):
數(shù)據(jù)庫回滾段是否足夠?
是否需要建立ORACLE數(shù)據(jù)庫索引、聚集、散列?
系統(tǒng)全局區(qū)(SGA)大小是否足夠?
SQL語句是否高效?
2、數(shù)據(jù)倉庫系統(tǒng)(DataWarehousing),這種信息系統(tǒng)的主要任務(wù)是從ORACLE的海量數(shù)據(jù)中進(jìn)行查詢,得到數(shù)據(jù)之間的某些規(guī)律。數(shù)據(jù)庫管理員需要為這種類型的ORACLE數(shù)據(jù)庫著重考慮下述參數(shù):
是否采用B*-索引或者bitmap索引?
是否采用并行SQL查詢以提高查詢效率?
是否采用PL/SQL函數(shù)編寫存儲(chǔ)過程?
有必要的話,需要建立并行數(shù)據(jù)庫提高數(shù)據(jù)庫的查詢效率
三、SQL語句的調(diào)整原則
SQL語言是一種靈活的語言,相同的功能可以使用不同的語句來實(shí)現(xiàn),但是語句的執(zhí)行效率是很不相同的。程序員可以使用EXPLAINPLAN語句來比較各種實(shí)現(xiàn)方案,并選出更優(yōu)的實(shí)現(xiàn)方案。總得來講,程序員寫SQL語句需要滿足考慮如下規(guī)則:
1、盡量使用索引。試比較下面兩條SQL語句:
語句A:SELECTdname,deptnoFROMdeptWHEREdeptnoNOTIN
(SELECTdeptnoFROMemp);
語句B:SELECTdname,deptnoFROMdeptWHERENOTEXISTS
(SELECTdeptnoFROMempWHEREdept.deptno=emp.deptno);
這兩條查詢語句實(shí)現(xiàn)的結(jié)果是相同的,但是執(zhí)行語句A的時(shí)候,ORACLE會(huì)對整個(gè)emp表進(jìn)行掃描,沒有使用建立在emp表上的deptno索引,執(zhí)行語句B的時(shí)候,由于在子查詢中使用了聯(lián)合查詢,ORACLE只是對emp表進(jìn)行的部分?jǐn)?shù)據(jù)掃描,并利用了deptno列的索引,所以語句B的效率要比語句A的效率高一些。
2、選擇聯(lián)合查詢的聯(lián)合次序??紤]下面的例子:
SELECTstuffFROMtabaa,tabbb,tabcc
WHEREa.acolbetween:alowand:ahigh
ANDb.bcolbetween:blowand:bhigh
ANDc.ccolbetween:clowand:chigh
ANDa.key1=b.key1
AMDa.key2=c.key2;
這個(gè)SQL例子中,程序員首先需要選擇要查詢的主表,因?yàn)橹鞅硪M(jìn)行整個(gè)表數(shù)據(jù)的掃描,所以主表應(yīng)該數(shù)據(jù)量最小,所以例子中表A的acol列的范圍應(yīng)該比表B和表C相應(yīng)列的范圍小。
3、在子查詢中慎重使用IN或者NOTIN語句,使用where(NOT)exists的效果要好的多。
4、慎重使用視圖的聯(lián)合查詢,尤其是比較復(fù)雜的視圖之間的聯(lián)合查詢。一般對視圖的查詢更好都分解為對數(shù)據(jù)表的直接查詢效果要好一些。
5、可以在參數(shù)文件中設(shè)置SHARED_POOL_RESERVED_SIZE參數(shù),這個(gè)參數(shù)在SGA共享池中保留一個(gè)連續(xù)的內(nèi)存空間,連續(xù)的內(nèi)存空間有益于存放大的SQL程序包。
6、ORACLE公司提供的DBMS_SHARED_POOL程序可以幫助程序員將某些經(jīng)常使用的存儲(chǔ)過程“釘”在SQL區(qū)中而不被換出內(nèi)存,程序員對于經(jīng)常使用并且占用內(nèi)存很多的存儲(chǔ)過程“釘”到內(nèi)存中有利于提高最終用戶的響應(yīng)時(shí)間。
四、CPU參數(shù)的調(diào)整
CPU是服務(wù)器的一項(xiàng)重要資源,服務(wù)器良好的工作狀態(tài)是在工作高峰時(shí)CPU的使用率在90%以上。如果空閑時(shí)間CPU使用率就在90%以上,說明服務(wù)器缺乏CPU資源,如果工作高峰時(shí)CPU使用率仍然很低,說明服務(wù)器CPU資源還比較富余。
使用操作相同命令可以看到CPU的使用情況,一般UNIX操作系統(tǒng)的服務(wù)器,可以使用sar_u命令查看CPU的使用率,NT操作系統(tǒng)的服務(wù)器,可以使用NT的性能管理器來查看CPU的使用率。
數(shù)據(jù)庫管理員可以通過查看v$sysstat數(shù)據(jù)字典中“CPUusedbythissession”統(tǒng)計(jì)項(xiàng)得知ORACLE數(shù)據(jù)庫使用的CPU時(shí)間,查看“OSUserlevelCPUtime”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)用戶態(tài)下的CPU時(shí)間,查看“OSSystemcallCPUtime”統(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ù)庫使用的CPU時(shí)間占操作系統(tǒng)總的CPU時(shí)間90%以上,說明服務(wù)器CPU基本上被ORACLE數(shù)據(jù)庫使用著,這是合理,反之,說明服務(wù)器CPU被其它程序占用過多,ORACLE數(shù)據(jù)庫無法得到更多的CPU時(shí)間。
數(shù)據(jù)庫管理員還可以通過查看v$sesstat數(shù)據(jù)字典來獲得當(dāng)前連接ORACLE數(shù)據(jù)庫各個(gè)會(huì)話占用的CPU時(shí)間,從而得知什么會(huì)話耗用服務(wù)器CPU比較多。
出現(xiàn)CPU資源不足的情況是很多的:SQL語句的重解析、低效率的SQL語句、鎖沖突都會(huì)引起CPU資源不足。
1、數(shù)據(jù)庫管理員可以執(zhí)行下述語句來查看SQL語句的解析情況:
SELECT*FROMV$SYSSTATWHERENAMEIN
(‘parsetimecpu’,’parsetimeelapsed’,’parsecount(hard)’);
這里parsetimecpu是系統(tǒng)服務(wù)時(shí)間,parsetimeelapsed是響應(yīng)時(shí)間,用戶等待時(shí)間,waitetime=parsetimeelapsed_parsetimecpu
由此可以得到用戶SQL語句平均解析等待時(shí)間=waitetime/parsecount。這個(gè)平均等待時(shí)間應(yīng)該接近于0,如果平均解析等待時(shí)間過長,數(shù)據(jù)庫管理員可以通過下述語句
SELECTSQL_TEXT,PARSE_CALLS,EXECUTIONSFROMV$SQLAREA
ORDERBYPARSE_CALLS;
來發(fā)現(xiàn)是什么SQL語句解析效率比較低。程序員可以優(yōu)化這些語句,或者增加ORACLE參數(shù)SESSION_CACHED_CURSORS的值。
2、數(shù)據(jù)庫管理員還可以通過下述語句:
SELECTBUFFER_GETS,EXECUTIONS,SQL_TEXTFROMV$SQLAREA;
查看低效率的SQL語句,優(yōu)化這些語句也有助于提高CPU的利用率。
3、數(shù)據(jù)庫管理員可以通過v$system_event數(shù)據(jù)字典中的“l(fā)atchfree”統(tǒng)計(jì)項(xiàng)查看ORACLE數(shù)據(jù)庫的沖突情況,如果沒有沖突的話,latchfree查詢出來沒有結(jié)果。如果沖突太大的話,數(shù)據(jù)庫管理員可以降低spin_count參數(shù)值,來消除高的CPU使用率。
五、內(nèi)存參數(shù)的調(diào)整
內(nèi)存參數(shù)的調(diào)整主要是指ORACLE數(shù)據(jù)庫的系統(tǒng)全局區(qū)(SGA)的調(diào)整。SGA主要由三部分構(gòu)成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。
1、共享池由兩部分構(gòu)成:共享SQL區(qū)和數(shù)據(jù)字典緩沖區(qū),共享SQL區(qū)是存放用戶SQL命令的區(qū)域,數(shù)據(jù)字典緩沖區(qū)存放數(shù)據(jù)庫運(yùn)行的動(dòng)態(tài)信息。數(shù)據(jù)庫管理員通過執(zhí)行下述語句:
select(sum(pins-reloads))/sum(pins)”LibCache”fromv$librarycache;
來查看共享SQL區(qū)的使用率。這個(gè)使用率應(yīng)該在90%以上,否則需要增加共享池的大小。數(shù)據(jù)庫管理員還可以執(zhí)行下述語句:
select(sum(gets-getmisses-usage-fixed))/sum(gets)”RowCache”fromv$rowcache;
查看數(shù)據(jù)字典緩沖區(qū)的使用率,這個(gè)使用率也應(yīng)該在90%以上,否則需要增加共享池的大小。
2、數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)庫管理員可以通過下述語句:
SELECTname,valueFROMv$sysstatWHEREnameIN(‘dbblockgets’,’consistentgets’,’physicalreads’);
來查看數(shù)據(jù)庫數(shù)據(jù)緩沖區(qū)的使用情況。查詢出來的結(jié)果可以計(jì)算出來數(shù)據(jù)緩沖區(qū)的使用命中率=1-(physicalreads/(dbblockgets+consistentgets))。
這個(gè)命中率應(yīng)該在90%以上,否則需要增加數(shù)據(jù)緩沖區(qū)的大小。
3、日志緩沖區(qū)。數(shù)據(jù)庫管理員可以通過執(zhí)行下述語句:
selectname,valuefromv$sysstatwherenamein(‘redoentries’,’redologspacerequests’);
查看日志緩沖區(qū)的使用情況。查詢出的結(jié)果可以計(jì)算出日志緩沖區(qū)的申請失敗率:
申請失敗率=requests/entries,申請失敗率應(yīng)該接近于0,否則說明日志緩沖區(qū)開設(shè)太小,需要增加ORACLE數(shù)據(jù)庫的日志緩沖區(qū)。
昌平北大青鳥java培訓(xùn)班轉(zhuǎn)載自網(wǎng)絡(luò)如有侵權(quán)請聯(lián)系我們感謝您的關(guān)注謝謝支持
關(guān)于oracle數(shù)據(jù)庫負(fù)載查詢的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
本文名稱:Oracle數(shù)據(jù)庫負(fù)載查詢技巧分享(oracle數(shù)據(jù)庫負(fù)載查詢)
分享路徑:http://fisionsoft.com.cn/article/dhepcoh.html


咨詢
建站咨詢
