日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Oracle數(shù)據(jù)庫負載查詢技巧分享(oracle數(shù)據(jù)庫負載查詢)

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

成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站設計制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元三江侗做網(wǎng)站,已為上家服務,為三江侗各地企業(yè)和個人服務,聯(lián)系電話:13518219792

1.利用AWR報告

AWR報告是Oracle數(shù)據(jù)庫性能診斷的重要工具之一,通過AWR報告可以了解數(shù)據(jù)庫的負載狀況。其中,load profile表格中的數(shù)據(jù)可以幫助DBA快速了解當前數(shù)據(jù)庫的負載情況。

load profile表格包含了如下信息:

– Per Second: 每秒鐘執(zhí)行的數(shù)據(jù)庫事務數(shù)

– Per Transaction: 每個事務所占用的CPU時間

– CPU Usage: 數(shù)據(jù)庫使用CPU的總量

– Memory Usage: 數(shù)據(jù)庫使用的內存總量

– IO Usage: 數(shù)據(jù)庫使用的IO總量

在高負載狀態(tài)下,load profile表格的Per Second和Per Transaction字段的值可能會非常高,這意味著數(shù)據(jù)庫的性能受到了極大的影響。因此,DBA們可以利用AWR報告了解數(shù)據(jù)庫的負載狀況,并根據(jù)實際情況選取合適的優(yōu)化手段。

2.利用TOP命令

在Linux環(huán)境下,DBA們可以利用TOP命令查看當前系統(tǒng)的負載情況。TOP命令會列出當前進程的CPU和內存消耗情況,并按照消耗量從大到小排序。通過TOP命令,DBA們可以了解當前系統(tǒng)的瓶頸所在,從而采取相應的優(yōu)化措施。

下面是一個例子:

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顯示當前系統(tǒng)的負載情況,%Cpu(s)顯示CPU的使用情況,而下面的表格顯示了當前系統(tǒng)的進程和它們的CPU和內存消耗情況。從表格中可以看出,PID為1785的oracle進程的CPU和內存消耗量都非常高,這表明當前數(shù)據(jù)庫的負載非常大。

3.利用SQL查詢

在Oracle數(shù)據(jù)庫中,DBA們可以通過以下SQL查詢獲取當前會話的相關信息:

SELECT sid, serial#, status, program, username, osuser, machine, module, action, client_identifier, client_info FROM v$session WHERE username IS NOT NULL;

以上SQL查詢可以用來查詢當前所有正在運行的會話,其中各個字段的含義如下:

– sid: 會話ID

– serial#: 會話序號

– status: 會話狀態(tài)

– program: 客戶端運行的程序

– username: 登錄會話的用戶名

– osuser: 登錄會話的操作系統(tǒng)用戶名

– machine: 登錄會話的主機名

– module: 客戶端模塊名稱

– action: 客戶端動作名稱

– client_identifier: 客戶端標識

– client_info: 客戶端信息

通過查詢上述信息,DBA們可以了解當前數(shù)據(jù)庫的會話情況,從而針對性地應用優(yōu)化措施。

Oracle數(shù)據(jù)庫的負載是DBA們關注的焦點,通過利用AWR報告、TOP命令和SQL查詢等技巧,可以快速地查詢數(shù)據(jù)庫的負載情況,并根據(jù)實際情況采取相應的優(yōu)化措施,保證數(shù)據(jù)庫的高性能和穩(wěn)定運行。

成都網(wǎng)站建設公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設、網(wǎng)站制作、網(wǎng)頁設計及定制高端網(wǎng)站建設服務!

數(shù)據(jù)庫是什么?Oracle又是啥玩意?

經(jīng)常會有人問我數(shù)據(jù)庫是干啥的,其實一開始我是拒絕回答的,因為我也不能做到通俗易懂的表達出來,畢竟我接觸這個概念也沒有多長時間,但隨著問的人多了,我覺得是時候腦補一下我的之一堂課了,萬一哪天冒出來個貨跟你掰扯這事兒,你沒分分鐘給他說清,最后弄個丟里兒丟面兒,好尷尬呀。

數(shù)據(jù)庫,說白了就是按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫,這些數(shù)據(jù)是結構化的,并可為多種應用服務。也就是說,數(shù)據(jù)庫是使用計算機服務器來存儲數(shù)據(jù)的,專門用來提供各種數(shù)據(jù)服務??梢赃@樣想像,過去一個公司的所有財務數(shù)據(jù)都是放在保險柜里面,而現(xiàn)在我們就可以針對這些財務數(shù)據(jù)搭建一個數(shù)據(jù)庫放在某臺計算機或服務器上面;再比如,企業(yè)或事業(yè)單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個數(shù)據(jù)庫。有了這個”數(shù)據(jù)倉庫”我們就可以根據(jù)需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數(shù)等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產(chǎn)管理中也需要建立眾多的這種”數(shù)據(jù)庫”,使其可以利用計算機實現(xiàn)財務、倉庫、生產(chǎn)的自動化管理。最常見的數(shù)據(jù)庫有:銀行儲蓄系統(tǒng)、手機話費系統(tǒng)、美容美發(fā)會員系統(tǒng)、超市會員積分系統(tǒng)、水電費系統(tǒng)、機票或火車票系統(tǒng)等,這些都需要后臺數(shù)據(jù)庫基礎設施的支撐。舉了這么多例子,應該是把數(shù)據(jù)庫說明白了,至少能在大腦里面有個概念,知道這個東西是干啥的。

現(xiàn)在大數(shù)據(jù)被炒的紅得發(fā)紫,而大數(shù)據(jù)的基礎也是數(shù)據(jù),由此可見,數(shù)據(jù)是一個企業(yè)的核心資源,說它是企業(yè)的立身之本、發(fā)展之基都不為過,因此,維護數(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è)領導先地位,也是當今更流行的關系型數(shù)據(jù)庫。Oracle可翻譯成”甲骨文”,它是一家以數(shù)據(jù)庫為主業(yè)的全球化公司,是全球第二大軟件公司(之一名是微軟公司),目前Oracle在數(shù)據(jù)庫軟件市場已經(jīng)排名之一,數(shù)據(jù)庫軟件市場份額達到48.6%,遙遙領先于第二名占有率僅為20.7%的IBM公司的DB2。在中國市場上的計算機專業(yè)系統(tǒng)后臺所使用的數(shù)據(jù)庫尤以Oracle數(shù)據(jù)庫居多。但是購買Oracle數(shù)據(jù)庫需要很大一筆費用,一般的大型企業(yè)使用,需要有專業(yè)人員進行管理和維護,中小企業(yè)承擔不起。中小企業(yè)為了節(jié)省成本,一般使用MySQL、PostgreSQL這類免費開源的數(shù)據(jù)庫,所以Oracle數(shù)據(jù)庫相關的工作崗位一般是在大型企業(yè)中。

對于為什么選擇Oracle數(shù)據(jù)庫,而不是其他的數(shù)據(jù)庫?

之一,是因為Oracle數(shù)據(jù)庫占據(jù)更大的市場份額,并且越來越大,市場需要很多Oracle數(shù)據(jù)庫方面的人才,中國有句老話說”做對事,選對人”,是同樣的道理;第二,是很多非Oracle數(shù)據(jù)庫的老系統(tǒng)正往Oracle數(shù)據(jù)庫遷移,其他數(shù)據(jù)庫市場占有率在減少,其他數(shù)據(jù)庫工作者有面臨失業(yè)的風險;第三,Oracle有大量的官方學習文檔,還有部分中文文檔,可以有效地進行學習;第四,Oracle有大量的從業(yè)人員,有共同方向的朋友可以互相幫助,不再是孤膽英雄;第五,是可以很容易地從Oracle官方網(wǎng)站下載功能齊全的數(shù)據(jù)庫最新版本進行學習,可以讓你了解數(shù)據(jù)庫方面的最新發(fā)展趨勢等。

在此說明,以后的所有內容都是基于Oracle11g數(shù)據(jù)庫產(chǎn)品的,下面我們就簡單介紹一下Oracle11g的系列產(chǎn)品:

企業(yè)版(EnterpriseEdition)此版本包含了數(shù)據(jù)庫的所有組件,并且能夠通過購買選項和程序包來進一步對其增強。

能支持例如大業(yè)務量的在線事務處理OLTP(On-LineTransactionProcessing聯(lián)機事務處理系統(tǒng))環(huán)境、查詢密集的數(shù)據(jù)倉庫和要求苛刻的互聯(lián)網(wǎng)應用程序。

標準版1(StandardEditionOne)此版本為工作組、部門級和互聯(lián)網(wǎng)、內聯(lián)網(wǎng)應用程序提供了前所未有的易用性和性價比。從針對小型商務的單服務器環(huán)境到大型的分布式部門環(huán)境,該版本包含了構建重要商務應用程序所必需的全部工具。它僅許可在更高容量為2個處理器的服務器上使用,支持Windows/Linux/UNIX操作系統(tǒng),并支持64位平臺操作系統(tǒng)。

標準版(StandardEdition)此版本提供了StandardEditionOne所不具有的易用性、能力和性能,并且利用真正的應用集群(RAC)提供了對更大型計算機和服務集群的支持。它可以在更高容量為4個處理器的單臺服務器上、或者在一個支持最多4個處理器的集群上使用,可支持Windows、Linux和UNIX操作系統(tǒng),并支持64位平臺操作系統(tǒng)。

簡化版此版本支持與標準版1、標準版和企業(yè)版完全兼容的單用戶開發(fā)和部署。通過將Oracle數(shù)據(jù)庫獲獎的功能引入到個人工作站中,該版本提供了結合世界上更流行的數(shù)據(jù)庫功能的數(shù)據(jù)庫,并且該數(shù)據(jù)庫具有桌面產(chǎn)品通常具有的易用性和簡單性,可支持Linux和Windows操作系統(tǒng)。

從存儲結構上來說,目前流行的數(shù)據(jù)庫主要包含以下兩種:

RDBMS:關系型數(shù)據(jù)庫,是指采用了關系模型來組織數(shù)據(jù)的數(shù)據(jù)庫;

NoSQL數(shù)據(jù)庫,是指那些非關系型的、分布式的數(shù)據(jù)庫。簡單來說,關系模型指的就是二維表格模型,而一個關系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織。

關系型數(shù)據(jù)庫優(yōu)點:

1、容易理解

二維表結構是非常貼近邏輯世界的一個概念,關系模型相對網(wǎng)狀、層次等其他模型來說更容易理解。

2、使用方便

通用的SQL語言使得操作關系型數(shù)據(jù)庫非常方便。

3、易于維護

豐富的完整性大大減低了數(shù)據(jù)冗余和數(shù)據(jù)部移植的概率。

4、事務安全

所有關系型數(shù)據(jù)庫都不同程度的遵守事物的四個基本屬性,因此對于銀行、電信、證券等交易型業(yè)務是不可或缺的。

關系型數(shù)據(jù)庫的瓶頸:

1、高并發(fā)讀寫需求

網(wǎng)站的用戶并發(fā)性非常高,往往達到每秒上萬次讀寫請求,對于傳統(tǒng)型數(shù)據(jù)庫來說,硬盤I/O是一個很大的瓶頸。

2、海量數(shù)據(jù)的高效率讀寫

互聯(lián)網(wǎng)上每天產(chǎn)生的數(shù)據(jù)量是巨大的,對于關系型數(shù)據(jù)庫來說,在一張包含海量數(shù)據(jù)的表中查詢,效率是非常低的。

3、高擴展性和可用性

在基于WEB的結構中,數(shù)據(jù)庫是最難進行橫向擴展的,當一個應用系統(tǒng)的用戶量和訪問量與日俱增的時候,數(shù)據(jù)庫卻沒有辦法像WEBServer和APPLICATIONServer那樣簡單的通過添加更多的硬件和服務節(jié)點來擴展性能和負載能力。對于很多需要提供24小時不間斷服務的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)進行升級和擴展是非常痛苦的事情,往往需要停機維護和數(shù)據(jù)遷移。

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

NoSQL一詞首先是CarloStrozzi在1998年提出的。2023年再次提出了NoSQL一詞,用于指那些非關系型的、分布式的,且一般不保證遵循ACID原則的數(shù)據(jù)存儲系統(tǒng)。

NoSQL具有以下特點:

1、可以彌補關系型數(shù)據(jù)庫的不足

2、針對某些特定的需求而設計,可以具有極高的性能

3、大部分都是開源的,由于成熟度不夠,存在潛在的穩(wěn)定性和維護性問題。

關系型數(shù)據(jù)庫適用于結構化數(shù)據(jù),而非關系型數(shù)據(jù)庫適用于非結構化數(shù)據(jù),二者優(yōu)勢互補,相得益彰。

Oracle數(shù)據(jù)庫未來的發(fā)展方向是提供結構化、非結構化、半結構化的解決方案,實現(xiàn)關系型數(shù)據(jù)庫和NoSQL共存互補。值得強調的是,目前關系型數(shù)據(jù)庫仍是主流數(shù)據(jù)庫。

雖然NoSQL數(shù)據(jù)庫打破了關系型數(shù)據(jù)庫存儲的觀念,可以很好地滿足WEB2.0時代數(shù)據(jù)的存儲要求,但NoSQL數(shù)據(jù)庫也有自己的缺陷。在現(xiàn)階段的情況下,可以將關系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫結合使用,相互彌補各自的不足。

關于數(shù)據(jù)庫及其代表產(chǎn)品Oracle今天就介紹這么多,有興趣的可以繼續(xù)深挖,希望我的介紹能讓你對數(shù)據(jù)庫有一個更深入的認識。如果有志于在這方面發(fā)展的話,就讓我們一起跟往事干杯從頭再來。

oracle在磁盤陣列上 兩臺服務器同時訪問,做負載均衡,如何實現(xiàn)?

你的意思就做oracle的RAC吧..

這個oracle的集群功能…就是兩臺生產(chǎn)機同時跑oracle的應用然后寫入后端的存儲池中..是否這個意思呢?…

問題補充:在以DRDB+oracle的情況下是否可以實現(xiàn)oracle的負載均衡,而不需要肯定得在每臺機器上都裝上數(shù)據(jù)庫 磁盤陣列上是裝不了數(shù)據(jù)庫的 服務器之間,UEiHHH

數(shù)據(jù)庫性能優(yōu)化有哪些措施?

1、調整數(shù)據(jù)結構的設計

這一部分在開發(fā)信息系統(tǒng)之前完成,程序員需要考慮是否使用ORACLE數(shù)據(jù)庫的分區(qū)功能,對于經(jīng)常訪問的數(shù)據(jù)庫表是否需要建立索引等。

2、調整應用程序結構設計

這一部分也是在開發(fā)信息系統(tǒng)之前完成,程序員在這一步需要考慮應用程序使用什么樣的體系結構,是使用傳統(tǒng)的Client/Server兩層體系結構,還是使用Browser/Web/Database的三層體系結構。不同的應用程序體系結構要求的數(shù)據(jù)庫資源是不同的。

3、調整數(shù)據(jù)庫SQL語句

應用程序的執(zhí)行最終將歸結為數(shù)據(jù)庫中的SQL語句執(zhí)行,因此SQL語句的執(zhí)行效率最終決定了ORACLE數(shù)據(jù)庫的性能。ORACLE公司推薦使用ORACLE語句優(yōu)化器(OracleOptimizer)和行鎖管理器(row-levelmanager)來調整優(yōu)化SQL語句。

4、調整服務器內存分配

內存分配是在信息系統(tǒng)運行過程中優(yōu)化配置的,數(shù)據(jù)庫管理員可以根據(jù)數(shù)據(jù)庫運行狀況調整數(shù)據(jù)庫系統(tǒng)全局區(qū)(SGA區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大小;還可以調整程序全局區(qū)(PGA區(qū))的大小。需要注意的是,SGA區(qū)不是越大越好,SGA區(qū)過大會占用操作系統(tǒng)使用的內存而引起虛擬內存的頁面交換,這樣反而會降低系統(tǒng)。

5、調整硬盤I/O

這一步是在信息系統(tǒng)開發(fā)之前完成的。數(shù)據(jù)庫管理員可以將組成同一個表空間的數(shù)據(jù)文件放在不同的硬盤上,做到硬盤之間I/O負載均衡。

6、調整操作系統(tǒng)參數(shù)

例如:運行在UNIX操作系統(tǒng)上的ORACLE數(shù)據(jù)庫,可以調整UNIX數(shù)據(jù)緩沖池的大小,每個進程所能使用的內存大小等參數(shù)。

實際上,上述數(shù)據(jù)庫優(yōu)化措施之間是相互聯(lián)系的。ORACLE數(shù)據(jù)庫性能惡化表現(xiàn)基本上都是用戶響應時間比較長,需要用戶長時間的等待。但性能惡化的原因卻是多種多樣的,有時是多個因素共同造成了性能惡化的結果,這就需要數(shù)據(jù)庫管理員有比較全面的計算機知識,能夠敏感地察覺到影響數(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動態(tài)運行情況,對于調整數(shù)據(jù)庫性能是很有幫助的。

操作系統(tǒng)工具,例如UNIX操作系統(tǒng)的vmstat,iostat等命令可以查看到系統(tǒng)系統(tǒng)級內存和硬盤I/O的使用情況,這些工具對于管理員弄清出系統(tǒng)瓶頸出現(xiàn)在什么地方有時候很有用。

SQL語言跟蹤工具(SQLTRACEFACILITY),SQL語言跟蹤工具可以記錄SQL語句的執(zhí)行情況,管理員可以使用虛擬表來調整實例,使用SQL語句跟蹤文件調整應用程序性能。SQL語言跟蹤工具將結果輸出成一個操作系統(tǒng)的文件,管理員可以使用TKPROF工具查看這些文件。

ORACLEEnterpriseManager(OEM),這是一個圖形的用戶管理界面,用戶可以使用它方便地進行數(shù)據(jù)庫管理而不必記住復雜的ORACLE數(shù)據(jù)庫管理的命令。

EXPLAINPLAN——SQL語言優(yōu)化命令,使用這個命令可以幫助程序員寫出高效的SQL語言。

二、ORACLE數(shù)據(jù)庫的系統(tǒng)性能評估

信息系統(tǒng)的類型不同,需要關注的數(shù)據(jù)庫參數(shù)也是不同的。數(shù)據(jù)庫管理員需要根據(jù)自己的信息系統(tǒng)的類型著重考慮不同的數(shù)據(jù)庫參數(shù)。

1、在線事務處理信息系統(tǒng)(OLTP),這種類型的信息系統(tǒng)一般需要有大量的Insert、Update操作,典型的系統(tǒng)包括民航機票發(fā)售系統(tǒng)、銀行儲蓄系統(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)的主要任務是從ORACLE的海量數(shù)據(jù)中進行查詢,得到數(shù)據(jù)之間的某些規(guī)律。數(shù)據(jù)庫管理員需要為這種類型的ORACLE數(shù)據(jù)庫著重考慮下述參數(shù):

是否采用B*-索引或者bitmap索引?

是否采用并行SQL查詢以提高查詢效率?

是否采用PL/SQL函數(shù)編寫存儲過程?

有必要的話,需要建立并行數(shù)據(jù)庫提高數(shù)據(jù)庫的查詢效率

三、SQL語句的調整原則

SQL語言是一種靈活的語言,相同的功能可以使用不同的語句來實現(xiàn),但是語句的執(zhí)行效率是很不相同的。程序員可以使用EXPLAINPLAN語句來比較各種實現(xiàn)方案,并選出更優(yōu)的實現(xiàn)方案。總得來講,程序員寫SQL語句需要滿足考慮如下規(guī)則:

1、盡量使用索引。試比較下面兩條SQL語句:

語句A:SELECTdname,deptnoFROMdeptWHEREdeptnoNOTIN

(SELECTdeptnoFROMemp);

語句B:SELECTdname,deptnoFROMdeptWHERENOTEXISTS

(SELECTdeptnoFROMempWHEREdept.deptno=emp.deptno);

這兩條查詢語句實現(xiàn)的結果是相同的,但是執(zhí)行語句A的時候,ORACLE會對整個emp表進行掃描,沒有使用建立在emp表上的deptno索引,執(zhí)行語句B的時候,由于在子查詢中使用了聯(lián)合查詢,ORACLE只是對emp表進行的部分數(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;

這個SQL例子中,程序員首先需要選擇要查詢的主表,因為主表要進行整個表數(shù)據(jù)的掃描,所以主表應該數(shù)據(jù)量最小,所以例子中表A的acol列的范圍應該比表B和表C相應列的范圍小。

3、在子查詢中慎重使用IN或者NOTIN語句,使用where(NOT)exists的效果要好的多。

4、慎重使用視圖的聯(lián)合查詢,尤其是比較復雜的視圖之間的聯(lián)合查詢。一般對視圖的查詢更好都分解為對數(shù)據(jù)表的直接查詢效果要好一些。

5、可以在參數(shù)文件中設置SHARED_POOL_RESERVED_SIZE參數(shù),這個參數(shù)在SGA共享池中保留一個連續(xù)的內存空間,連續(xù)的內存空間有益于存放大的SQL程序包。

6、ORACLE公司提供的DBMS_SHARED_POOL程序可以幫助程序員將某些經(jīng)常使用的存儲過程“釘”在SQL區(qū)中而不被換出內存,程序員對于經(jīng)常使用并且占用內存很多的存儲過程“釘”到內存中有利于提高最終用戶的響應時間。

四、CPU參數(shù)的調整

CPU是服務器的一項重要資源,服務器良好的工作狀態(tài)是在工作高峰時CPU的使用率在90%以上。如果空閑時間CPU使用率就在90%以上,說明服務器缺乏CPU資源,如果工作高峰時CPU使用率仍然很低,說明服務器CPU資源還比較富余。

使用操作相同命令可以看到CPU的使用情況,一般UNIX操作系統(tǒng)的服務器,可以使用sar_u命令查看CPU的使用率,NT操作系統(tǒng)的服務器,可以使用NT的性能管理器來查看CPU的使用率。

數(shù)據(jù)庫管理員可以通過查看v$sysstat數(shù)據(jù)字典中“CPUusedbythissession”統(tǒng)計項得知ORACLE數(shù)據(jù)庫使用的CPU時間,查看“OSUserlevelCPUtime”統(tǒng)計項得知操作系統(tǒng)用戶態(tài)下的CPU時間,查看“OSSystemcallCPUtime”統(tǒng)計項得知操作系統(tǒng)系統(tǒng)態(tài)下的CPU時間,操作系統(tǒng)總的CPU時間就是用戶態(tài)和系統(tǒng)態(tài)時間之和,如果ORACLE數(shù)據(jù)庫使用的CPU時間占操作系統(tǒng)總的CPU時間90%以上,說明服務器CPU基本上被ORACLE數(shù)據(jù)庫使用著,這是合理,反之,說明服務器CPU被其它程序占用過多,ORACLE數(shù)據(jù)庫無法得到更多的CPU時間。

數(shù)據(jù)庫管理員還可以通過查看v$sesstat數(shù)據(jù)字典來獲得當前連接ORACLE數(shù)據(jù)庫各個會話占用的CPU時間,從而得知什么會話耗用服務器CPU比較多。

出現(xiàn)CPU資源不足的情況是很多的:SQL語句的重解析、低效率的SQL語句、鎖沖突都會引起CPU資源不足。

1、數(shù)據(jù)庫管理員可以執(zhí)行下述語句來查看SQL語句的解析情況:

SELECT*FROMV$SYSSTATWHERENAMEIN

(‘parsetimecpu’,’parsetimeelapsed’,’parsecount(hard)’);

這里parsetimecpu是系統(tǒng)服務時間,parsetimeelapsed是響應時間,用戶等待時間,waitetime=parsetimeelapsed_parsetimecpu

由此可以得到用戶SQL語句平均解析等待時間=waitetime/parsecount。這個平均等待時間應該接近于0,如果平均解析等待時間過長,數(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)計項查看ORACLE數(shù)據(jù)庫的沖突情況,如果沒有沖突的話,latchfree查詢出來沒有結果。如果沖突太大的話,數(shù)據(jù)庫管理員可以降低spin_count參數(shù)值,來消除高的CPU使用率。

五、內存參數(shù)的調整

內存參數(shù)的調整主要是指ORACLE數(shù)據(jù)庫的系統(tǒng)全局區(qū)(SGA)的調整。SGA主要由三部分構成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。

1、共享池由兩部分構成:共享SQL區(qū)和數(shù)據(jù)字典緩沖區(qū),共享SQL區(qū)是存放用戶SQL命令的區(qū)域,數(shù)據(jù)字典緩沖區(qū)存放數(shù)據(jù)庫運行的動態(tài)信息。數(shù)據(jù)庫管理員通過執(zhí)行下述語句:

select(sum(pins-reloads))/sum(pins)”LibCache”fromv$librarycache;

來查看共享SQL區(qū)的使用率。這個使用率應該在90%以上,否則需要增加共享池的大小。數(shù)據(jù)庫管理員還可以執(zhí)行下述語句:

select(sum(gets-getmisses-usage-fixed))/sum(gets)”RowCache”fromv$rowcache;

查看數(shù)據(jù)字典緩沖區(qū)的使用率,這個使用率也應該在90%以上,否則需要增加共享池的大小。

2、數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)庫管理員可以通過下述語句:

SELECTname,valueFROMv$sysstatWHEREnameIN(‘dbblockgets’,’consistentgets’,’physicalreads’);

來查看數(shù)據(jù)庫數(shù)據(jù)緩沖區(qū)的使用情況。查詢出來的結果可以計算出來數(shù)據(jù)緩沖區(qū)的使用命中率=1-(physicalreads/(dbblockgets+consistentgets))。

這個命中率應該在90%以上,否則需要增加數(shù)據(jù)緩沖區(qū)的大小。

3、日志緩沖區(qū)。數(shù)據(jù)庫管理員可以通過執(zhí)行下述語句:

selectname,valuefromv$sysstatwherenamein(‘redoentries’,’redologspacerequests’);

查看日志緩沖區(qū)的使用情況。查詢出的結果可以計算出日志緩沖區(qū)的申請失敗率:

申請失敗率=requests/entries,申請失敗率應該接近于0,否則說明日志緩沖區(qū)開設太小,需要增加ORACLE數(shù)據(jù)庫的日志緩沖區(qū)。

昌平北大青鳥java培訓班轉載自網(wǎng)絡如有侵權請聯(lián)系我們感謝您的關注謝謝支持

關于oracle數(shù)據(jù)庫負載查詢的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

創(chuàng)新互聯(lián)-老牌IDC、云計算及IT信息化服務領域的服務供應商,業(yè)務涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務、云計算服務、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設,咨詢熱線:028-86922220


本文名稱:Oracle數(shù)據(jù)庫負載查詢技巧分享(oracle數(shù)據(jù)庫負載查詢)
轉載源于:http://www.5511xx.com/article/dhepcoh.html