成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

oracle怎么性能優(yōu)化 oraclesql性能優(yōu)化

oracle數(shù)據(jù)庫(kù)的性能優(yōu)化有哪些方法?

你最好買(mǎi)一本專(zhuān)門(mén)講ORACLE性能優(yōu)化的書(shū),好好看看\x0d\x0a1、調(diào)整數(shù)據(jù)庫(kù)服務(wù)器的性能\x0d\x0aOracle數(shù)據(jù)庫(kù)服務(wù)器是整個(gè)系統(tǒng)的核心,它的性能高低直接影響整個(gè)系統(tǒng)的性能,為了調(diào)整Oracle數(shù)據(jù)庫(kù)服務(wù)器的性能,主要從以下幾個(gè)方面考慮: \x0d\x0a1.1、調(diào)整操作系統(tǒng)以適合Oracle數(shù)據(jù)庫(kù)服務(wù)器運(yùn)行\(zhòng)x0d\x0aOracle數(shù)據(jù)庫(kù)服務(wù)器很大程度上依賴(lài)于運(yùn)行服務(wù)器的操作系統(tǒng),如果操作系統(tǒng)不能提供最好性能,那么無(wú)論如何調(diào)整,Oracle數(shù)據(jù)庫(kù)服務(wù)器也無(wú)法發(fā)揮其應(yīng)有的性能。 \x0d\x0a1.1.1、為Oracle數(shù)據(jù)庫(kù)服務(wù)器規(guī)劃系統(tǒng)資源 \x0d\x0a據(jù)已有計(jì)算機(jī)可用資源, 規(guī)劃分配給Oracle服務(wù)器資源原則是:盡可能使Oracle服務(wù)器使用資源最大化,特別在Client/Server中盡量讓服務(wù)器上所有資源都來(lái)運(yùn)行Oracle服務(wù)。 \x0d\x0a1.1.2、調(diào)整計(jì)算機(jī)系統(tǒng)中的內(nèi)存配置 \x0d\x0a多數(shù)操作系統(tǒng)都用虛存來(lái)模擬計(jì)算機(jī)上更大的內(nèi)存,它實(shí)際上是硬盤(pán)上的一定的磁盤(pán)空間。當(dāng)實(shí)際的內(nèi)存空間不能滿(mǎn)足應(yīng)用軟件的要求時(shí),操作系統(tǒng)就將用這部分的磁盤(pán)空間對(duì)內(nèi)存中的信息進(jìn)行頁(yè)面替換,這將引起大量的磁盤(pán)I/O操作,使整個(gè)服務(wù)器的性能下降。為了避免過(guò)多地使用虛存,應(yīng)加大計(jì)算機(jī)的內(nèi)存。 \x0d\x0a1.1.3、為Oracle數(shù)據(jù)庫(kù)服務(wù)器設(shè)置操作系統(tǒng)進(jìn)程優(yōu)先級(jí) \x0d\x0a不要在操作系統(tǒng)中調(diào)整Oracle進(jìn)程的優(yōu)先級(jí),因?yàn)樵贠racle數(shù)據(jù)庫(kù)系統(tǒng)中,所有的后臺(tái)和前臺(tái)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程執(zhí)行的是同等重要的工作,需要同等的優(yōu)先級(jí)。所以在安裝時(shí),讓所有的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程都使用缺省的優(yōu)先級(jí)運(yùn)行。 \x0d\x0a1.2、調(diào)整內(nèi)存分配\x0d\x0aOracle數(shù)據(jù)庫(kù)服務(wù)器保留3個(gè)基本的內(nèi)存高速緩存,分別對(duì)應(yīng)3種不同類(lèi)型的數(shù)據(jù):庫(kù)高速緩存,字典高速緩存和緩沖區(qū)高速緩存。庫(kù)高速緩存和字典高速緩存一起構(gòu)成共享池,共享池再加上緩沖區(qū)高速緩存便構(gòu)成了系統(tǒng)全程區(qū)(SGA)。SGA是對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行快速訪問(wèn)的一個(gè)系統(tǒng)全程區(qū),若SGA本身需要頻繁地進(jìn)行釋放、分配,則不能達(dá)到快速訪問(wèn)數(shù)據(jù)的目的,因此應(yīng)把SGA放在主存中,不要放在虛擬內(nèi)存中。內(nèi)存的調(diào)整主要是指調(diào)整組成SGA的內(nèi)存結(jié)構(gòu)的大小來(lái)提高系統(tǒng)性能,由于Oracle數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)存結(jié)構(gòu)需求與應(yīng)用密切相關(guān),所以?xún)?nèi)存結(jié)構(gòu)的調(diào)整應(yīng)在磁盤(pán)I/O調(diào)整之前進(jìn)行。 \x0d\x0a1.2.1、庫(kù)緩沖區(qū)的調(diào)整 \x0d\x0a庫(kù)緩沖區(qū)中包含私用和共享SQL和PL/SQL區(qū),通過(guò)比較庫(kù)緩沖區(qū)的命中率決定它的大小。要調(diào)整庫(kù)緩沖區(qū),必須首先了解該庫(kù)緩沖區(qū)的活動(dòng)情況,庫(kù)緩沖區(qū)的活動(dòng)統(tǒng)計(jì)信息保留在動(dòng)態(tài)性能表v$librarycache數(shù)據(jù)字典中,可通過(guò)查詢(xún)?cè)摫韥?lái)了解其活動(dòng)情況,以決定如何調(diào)整。 \x0d\x0a \x0d\x0aSelect sum(pins),sum(reloads) from v$librarycache; \x0d\x0a \x0d\x0aPins列給出SQL語(yǔ)句,PL/SQL塊及被訪問(wèn)對(duì)象定義的總次數(shù);Reloads列給出SQL 和PL/SQL塊的隱式分析或?qū)ο蠖x重裝載時(shí)在庫(kù)程序緩沖區(qū)中發(fā)生的錯(cuò)誤。如果sum(pins)/sum(reloads) ≈0,則庫(kù)緩沖區(qū)的命中率合適;若sum(pins)/sum(reloads)1, 則需調(diào)整初始化參數(shù) shared_pool_size來(lái)重新調(diào)整分配給共享池的內(nèi)存量。 \x0d\x0a1.2.2、數(shù)據(jù)字典緩沖區(qū)的調(diào)整 \x0d\x0a數(shù)據(jù)字典緩沖區(qū)包含了有關(guān)數(shù)據(jù)庫(kù)的結(jié)構(gòu)、用戶(hù)、實(shí)體信息。數(shù)據(jù)字典的命中率,對(duì)系統(tǒng)性能影響極大。數(shù)據(jù)字典緩沖區(qū)的使用情況記錄在動(dòng)態(tài)性能表v$librarycache中,可通過(guò)查詢(xún)?cè)摫韥?lái)了解其活動(dòng)情況,以決定如何調(diào)整。 \x0d\x0a \x0d\x0aSelect sum(gets),sum(getmisses) from v$rowcache; \x0d\x0a \x0d\x0aGets列是對(duì)相應(yīng)項(xiàng)請(qǐng)求次數(shù)的統(tǒng)計(jì);Getmisses 列是引起緩沖區(qū)出錯(cuò)的數(shù)據(jù)的請(qǐng)求次數(shù)。對(duì)于頻繁訪問(wèn)的數(shù)據(jù)字典緩沖區(qū),sum(getmisses)/sum(gets)10%~15%。若大于此百分?jǐn)?shù),則應(yīng)考慮增加數(shù)據(jù)字典緩沖區(qū)的容量,即需調(diào)整初始化參數(shù)shared_pool_size來(lái)重新調(diào)整分配給共享池的內(nèi)存量。 \x0d\x0a1.2.3、緩沖區(qū)高速緩存的調(diào)整 \x0d\x0a用戶(hù)進(jìn)程所存取的所有數(shù)據(jù)都是經(jīng)過(guò)緩沖區(qū)高速緩存來(lái)存取,所以該部分的命中率,對(duì)性能至關(guān)重要。緩沖區(qū)高速緩存的使用情況記錄在動(dòng)態(tài)性能表v$sysstat中,可通過(guò)查詢(xún)?cè)摫韥?lái)了解其活動(dòng)情況,以決定如何調(diào)整。 \x0d\x0a \x0d\x0aSelect name,value from v$sysstat where name in ('dbblock gets','consistent gets','physical reads'); \x0d\x0a \x0d\x0adbblock gets和consistent gets的值是請(qǐng)求數(shù)據(jù)緩沖區(qū)中讀的總次數(shù)。physical reads的值是請(qǐng)求數(shù)據(jù)時(shí)引起從盤(pán)中讀文件的次數(shù)。從緩沖區(qū)高速緩存中讀的可能性的高低稱(chēng)為緩沖區(qū)的命中率,計(jì)算公式: \x0d\x0a \x0d\x0aHit Ratio=1-(physical reds/(dbblock gets+consistent gets)) \x0d\x0a \x0d\x0a如果Hit Ratio60%~70%,則應(yīng)增大db_block_buffers的參數(shù)值。db_block_buffers可以調(diào)整分配給緩沖區(qū)高速緩存的內(nèi)存量,即db_block_buffers可設(shè)置分配緩沖區(qū)高速緩存的數(shù)據(jù)塊的個(gè)數(shù)。緩沖區(qū)高速緩存的總字節(jié)數(shù)=db_block_buffers的值*db_block_size的值。db_block_size 的值表示數(shù)據(jù)塊大小的字節(jié)數(shù),可查詢(xún) v$parameter 表: \x0d\x0a \x0d\x0aselect name,value from v$parameter where name='db_block_size'; \x0d\x0a \x0d\x0a在修改了上述數(shù)據(jù)庫(kù)的初始化參數(shù)以后,必須先關(guān)閉數(shù)據(jù)庫(kù),在重新啟動(dòng)數(shù)據(jù)庫(kù)后才能使新的設(shè)置起作用。

蓮湖ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

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

1、調(diào)整數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。這一部分在開(kāi)發(fā)信息系統(tǒng)之前完成,程序員需要考慮是否使用ORACLE數(shù)據(jù)庫(kù)的分區(qū)功能,對(duì)于經(jīng)常訪問(wèn)的數(shù)據(jù)庫(kù)表是否需要建立索引等。

2、調(diào)整應(yīng)用程序結(jié)構(gòu)設(shè)計(jì)。這一部分也是在開(kāi)發(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ù)資源是不同的。

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)來(lái)調(diào)整優(yōu)化SQL語(yǔ)句。

4、調(diào)整服務(wù)器內(nèi)存分配。內(nèi)存分配是在信息系統(tǒng)運(yùn)行過(guò)程中優(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ū)過(guò)大會(huì)占用操作系統(tǒng)使用的內(nèi)存而引起虛擬內(nèi)存的頁(yè)面交換,這樣反而會(huì)降低系統(tǒng)。

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

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ù)。

數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),它產(chǎn)生于距今六十多年前,隨著信息技術(shù)和市場(chǎng)的發(fā)展,特別是二十世紀(jì)九十年代以后,數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成用戶(hù)所需要的各種數(shù)據(jù)管理的方式。數(shù)據(jù)庫(kù)有很多種類(lèi)型,從最簡(jiǎn)單的存儲(chǔ)有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲(chǔ)的大型數(shù)據(jù)庫(kù)系統(tǒng)都在各個(gè)方面得到了廣泛的應(yīng)用。

在信息化社會(huì),充分有效地管理和利用各類(lèi)信息資源,是進(jìn)行科學(xué)研究和決策管理的前提條件。數(shù)據(jù)庫(kù)技術(shù)是管理信息系統(tǒng)、辦公自動(dòng)化系統(tǒng)、決策支持系統(tǒng)等各類(lèi)信息系統(tǒng)的核心部分,是進(jìn)行科學(xué)研究和決策管理的重要技術(shù)手段。

在經(jīng)濟(jì)管理的日常工作中,常常需要把某些相關(guān)的數(shù)據(jù)放進(jìn)這樣的“倉(cāng)庫(kù)”,并根據(jù)管理的需要進(jìn)行相應(yīng)的處理。

例如,企業(yè)或事業(yè)單位的人事部門(mén)常常要把本單位職工的基本情況(職工號(hào)、姓名、年齡、性別、籍貫、工資、簡(jiǎn)歷等)存放在表中,這張表就可以看成是一個(gè)數(shù)據(jù)庫(kù)。有了這個(gè)"數(shù)據(jù)倉(cāng)庫(kù)"我們就可以根據(jù)需要隨時(shí)查詢(xún)某職工的基本情況,也可以查詢(xún)工資在某個(gè)范圍內(nèi)的職工人數(shù)等等。這些工作如果都能在計(jì)算機(jī)上自動(dòng)進(jìn)行,那我們的人事管理就可以達(dá)到極高的水平。此外,在財(cái)務(wù)管理、倉(cāng)庫(kù)管理、生產(chǎn)管理中也需要建立眾多的這種"數(shù)據(jù)庫(kù)",使其可以利用計(jì)算機(jī)實(shí)現(xiàn)財(cái)務(wù)、倉(cāng)庫(kù)、生產(chǎn)的自動(dòng)化管理。

擴(kuò)展資料

數(shù)據(jù)庫(kù),簡(jiǎn)單來(lái)說(shuō)是本身可視為電子化的文件柜--存儲(chǔ)電子文件的處所,用戶(hù)可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、截取、更新、刪除等操作。

數(shù)據(jù)庫(kù)指的是以一定方式儲(chǔ)存在一起、能為多個(gè)用戶(hù)共享、具有盡可能小的冗余度的特點(diǎn)、是與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。

在經(jīng)濟(jì)管理的日常工作中,常常需要把某些相關(guān)的數(shù)據(jù)放進(jìn)這樣的"倉(cāng)庫(kù)",并根據(jù)管理的需要進(jìn)行相應(yīng)的處理。

例如,企業(yè)或事業(yè)單位的人事部門(mén)常常要把本單位職工的基本情況(職工號(hào)、姓名、年齡、性別、籍貫、工資、簡(jiǎn)歷等)存放在表中,這張表就可以看成是一個(gè)數(shù)據(jù)庫(kù)。有了這個(gè)"數(shù)據(jù)倉(cāng)庫(kù)"我們就可以根據(jù)需要隨時(shí)查詢(xún)某職工的基本情況,也可以查詢(xún)工資在某個(gè)范圍內(nèi)的職工人數(shù)等等。這些工作如果都能在計(jì)算機(jī)上自動(dòng)進(jìn)行,那我們的人事管理就可以達(dá)到極高的水平。此外,在財(cái)務(wù)管理、倉(cāng)庫(kù)管理、生產(chǎn)管理中也需要建立眾多的這種"數(shù)據(jù)庫(kù)",使其可以利用計(jì)算機(jī)實(shí)現(xiàn)財(cái)務(wù)、倉(cāng)庫(kù)、生產(chǎn)的自動(dòng)化管理。

參考資料:數(shù)據(jù)庫(kù)的百度百科

Oracle設(shè)置系統(tǒng)參數(shù)進(jìn)行性能優(yōu)化

一 SGA

Shared pool tunning

Shared pool的優(yōu)化應(yīng)該放在優(yōu)先考慮 因?yàn)橐粋€(gè)cache miss在shared pool中發(fā)生比在data buffer中發(fā)生導(dǎo)致的成本更高 由于dictionary數(shù)據(jù)一般比library cache中的數(shù)據(jù)在內(nèi)存中保存的時(shí)間長(zhǎng) 所以關(guān)鍵是library cache的優(yōu)化

Gets (parse)在namespace中查找對(duì)象的次數(shù)

Pins (execution)在namespace中讀取或執(zhí)行對(duì)象的次數(shù)

Reloads (reparse)在執(zhí)行階段library cache misses的次數(shù) 導(dǎo)致sql需要重新解析

) 檢查v$librarycache中sql area的gethitratio是否超過(guò) % 如果未超過(guò) % 應(yīng)該檢查應(yīng)用代碼 提高應(yīng)用代碼的效率

Select gethitratio from v$librarycache where namespace= sql area ;

) v$librarycache中reloads/pins的比率應(yīng)該小于 % 如果大于 % 應(yīng)該增加參數(shù)shared_pool_size的值

Select sum(pins) executions sum(reloads) cache misses sum(reloads)/sum(pins) from v$librarycache;

reloads/pins %有兩種可能 一種是library cache空間不足 一種是sql中引用的對(duì)象不合法

)shared pool reserved size一般是shared pool size的 % 不能超過(guò) % V$shared_pool_reserved中的request misses= 或沒(méi)有持續(xù)增長(zhǎng) 或者free_memory大于shared pool reserved size的 % 表明shared pool reserved size過(guò)大 可以壓縮

)將大的匿名pl/sql代碼塊轉(zhuǎn)換成小的匿名pl/sql代碼塊調(diào)用存儲(chǔ)過(guò)程

)從 i開(kāi)始 可以將execution plan與sql語(yǔ)句一起保存在library cache中 方便進(jìn)行性能診斷 從v$sql_plan中可以看到execution plans

)保留大的對(duì)象在shared pool中 大的對(duì)象是造成內(nèi)存碎片的主要原因 為了騰出空間許多小對(duì)象需要移出內(nèi)存 從而影響了用戶(hù)的性能 因此需要將一些常用的大的對(duì)象保留在shared pool中 下列對(duì)象需要保留在shared pool中

a 經(jīng)常使用的存儲(chǔ)過(guò)程

b 經(jīng)常操作的表上的已編譯的觸發(fā)器

c Sequence 因?yàn)镾equence移出shared pool后可能產(chǎn)生號(hào)碼丟失

查找沒(méi)有保存在library cache中的大對(duì)象

Select * from v$db_object_cache where sharable_mem and

type in ( PACKAGE PROCEDURE FUNCTION PACKAGE BODY ) and kept= NO ;

將這些對(duì)象保存在library cache中

Execute dbms_shared_pool keep( package_name );

對(duì)應(yīng)腳本 dbmspool sql

)查找是否存在過(guò)大的匿名pl/sql代碼塊 兩種解決方案

A.轉(zhuǎn)換成小的匿名塊調(diào)用存儲(chǔ)過(guò)程

B.將其保留在shared pool中

查找是否存在過(guò)大的匿名pl/sql塊

Select sql_text from v$sqlarea where mand_type= and length(sql_text) ;

)Dictionary cache的優(yōu)化

避免出現(xiàn)Dictionary cache的misses 或者misses的數(shù)量保持穩(wěn)定 只能通過(guò)調(diào)整shared_pool_size來(lái)間接調(diào)整dictionary cache的大小

Percent misses應(yīng)該很低 大部分應(yīng)該低于 % 合計(jì)應(yīng)該低于 %

Select sum(getmisses)/sum(gets) from v$rowcache;

若超過(guò) % 增加shared_pool_size的值

Buffer Cache

)granule大小的設(shè)置 db_cache_size以字節(jié)為單位定義了default buffer pool的大小

如果SGA M granule= M 否則granule= M 即需要調(diào)整sga的時(shí)候以granule為單位增加大小 并且sga的大小應(yīng)該是granule的整數(shù)倍

) 根據(jù)v$db_cache_advice調(diào)整buffer cache的大小

SELECT size_for_estimate buffers_for_estimate estd_physical_read_factor estd_physical_reads

FROM v$db_cache_advice WHERE NAME= DEFAULT AND advice_status= ON

AND block_size=(SELECT Value FROM v$parameter WHERE NAME= db_block_size );

estd_physical_read_factor=

) 統(tǒng)計(jì)buffer cache的cache hit ratio % 如果低于 % 可以用下列方案解決

◆增加buffer cache的值

◆使用多個(gè)buffer pool

◆Cache table

◆為 sorting and parallel reads 建獨(dú)立的buffer cache

SELECT NAME value FROM v$sysstat WHERE NAME IN ( session logical reads

physical reads physical reads direct physical reads direct(lob) );

Cache hit ratio= (physical reads physical reads direct physical reads direct (lob))/session logical reads;Select (phy value dir value lob value)/log value from v$sysstat log v$sysstat phy v$sysstat dir v$sysstat LOB where log name= session logical reads and phy name= physical reads and dir name= physical reads direct and lob name= physical reads direct (lob) ;

影響cache hit ratio的因素 全表掃描 應(yīng)用設(shè)計(jì) 大表的隨機(jī)訪問(wèn) cache hits的不均衡分布

)表空間使用自動(dòng)空間管理 消除了自由空間列表的需求 可以減少數(shù)據(jù)庫(kù)的競(jìng)爭(zhēng)

其他SGA對(duì)象

)redo log buffer

對(duì)應(yīng)的參數(shù)是log_buffer 缺省值與 OS相關(guān) 一般是 K 檢查v$session_wait中是否存在log buffer wait v$sysstat中是否存在redo buffer allocation retries

A 檢查是否存在log buffer wait

Select * from v$session_wait where event= log buffer wait ;

如果出現(xiàn)等待 一是可以增加log buffer的大小 也可以通過(guò)將log 文件移到訪問(wèn)速度更快的磁盤(pán)來(lái)解決

B

Select name value from v$sysstat where name in

( redo buffer allocation retries redo entries )

Redo buffer allocation retries接近 小于redo entries 的 % 如果一直在增長(zhǎng) 表明進(jìn)程已經(jīng)不得不等待redo buffer的空間 如果Redo buffer allocation retries過(guò)大 增加log_buffer的值

C 檢查日志文件上是否存在磁盤(pán)IO競(jìng)爭(zhēng)現(xiàn)象

Select event total_waits time_waited average_wait from v$system_event

where event like log file switch pletion% ;

如果存在競(jìng)爭(zhēng) 可以考慮將log文件轉(zhuǎn)移到獨(dú)立的 更快的存儲(chǔ)設(shè)備上或增大log文件

D 檢查點(diǎn)的設(shè)置是否合理

檢查alert log文件中 是否存在 checkpoint not plete

Select event total_waits time_waited average_wait from v$system_event

where event like log file switch (check% ;

如果存在等待 調(diào)整log_checkpoint_interval log_checkpoint_timeout的設(shè)置

E 檢查log archiver的工作

Select event total_waits time_waited average_wait from v$system_event

where event like log file switch (arch% ;

如果存在等待 檢查保存歸檔日志的存儲(chǔ)設(shè)備是否已滿(mǎn) 增加日志文件組 調(diào)整log_archiver_max_processes

F DB_block_checksum=true 因此增加了性能負(fù)擔(dān) (為了保證數(shù)據(jù)的一致性 oracle的寫(xiě)數(shù)據(jù)的時(shí)候加一個(gè)checksum在block上 在讀數(shù)據(jù)的時(shí)候?qū)hecksum進(jìn)行驗(yàn)證)

)java pool

對(duì)于大的應(yīng)用 java_pool_size應(yīng)= M 對(duì)于一般的java存儲(chǔ)過(guò)程 缺省的 M已經(jīng)夠用了

)檢查是否需要調(diào)整DBWn

lishixinzhi/Article/program/Oracle/201311/17744

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

1、調(diào)整數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)

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

2、調(diào)整應(yīng)用程序結(jié)構(gòu)設(shè)計(jì)

這一部分也是在開(kāi)發(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ù)資源是不同的。

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)化器(OracleOptimizer)和行鎖管理器(row-levelmanager)來(lái)調(diào)整優(yōu)化SQL語(yǔ)句。

4、調(diào)整服務(wù)器內(nèi)存分配

內(nèi)存分配是在信息系統(tǒng)運(yùn)行過(guò)程中優(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ū)過(guò)大會(huì)占用操作系統(tǒng)使用的內(nèi)存而引起虛擬內(nèi)存的頁(yè)面交換,這樣反而會(huì)降低系統(tǒng)。

5、調(diào)整硬盤(pán)I/O

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

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ù)。

實(shí)際上,上述數(shù)據(jù)庫(kù)優(yōu)化措施之間是相互聯(lián)系的。ORACLE數(shù)據(jù)庫(kù)性能惡化表現(xiàn)基本上都是用戶(hù)響應(yīng)時(shí)間比較長(zhǎng),需要用戶(hù)長(zhǎng)時(shí)間的等待。但性能惡化的原因卻是多種多樣的,有時(shí)是多個(gè)因素共同造成了性能惡化的結(jié)果,這就需要數(shù)據(jù)庫(kù)管理員有比較全面的計(jì)算機(jī)知識(shí),能夠敏感地察覺(jué)到影響數(shù)據(jù)庫(kù)性能的主要原因所在。另外,良好的數(shù)據(jù)庫(kù)管理工具對(duì)于優(yōu)化數(shù)據(jù)庫(kù)性能也是很重要的。

一、ORACLE數(shù)據(jù)庫(kù)性能優(yōu)化工具

常用的數(shù)據(jù)庫(kù)性能優(yōu)化工具有:

ORACLE數(shù)據(jù)庫(kù)在線數(shù)據(jù)字典,ORACLE在線數(shù)據(jù)字典能夠反映出ORACLE動(dòng)態(tài)運(yùn)行情況,對(duì)于調(diào)整數(shù)據(jù)庫(kù)性能是很有幫助的。

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

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

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

EXPLAINPLAN——SQL語(yǔ)言?xún)?yōu)化命令,使用這個(gè)命令可以幫助程序員寫(xiě)出高效的SQL語(yǔ)言。

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

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

1、在線事務(wù)處理信息系統(tǒng)(OLTP),這種類(lèi)型的信息系統(tǒng)一般需要有大量的Insert、Update操作,典型的系統(tǒng)包括民航機(jī)票發(fā)售系統(tǒng)、銀行儲(chǔ)蓄系統(tǒng)等。OLTP系統(tǒng)需要保證數(shù)據(jù)庫(kù)的并發(fā)性、可靠性和最終用戶(hù)的速度,這類(lèi)系統(tǒng)使用的ORACLE數(shù)據(jù)庫(kù)需要主要考慮下述參數(shù):

數(shù)據(jù)庫(kù)回滾段是否足夠?

是否需要建立ORACLE數(shù)據(jù)庫(kù)索引、聚集、散列?

系統(tǒng)全局區(qū)(SGA)大小是否足夠?

SQL語(yǔ)句是否高效?

2、數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)(DataWarehousing),這種信息系統(tǒng)的主要任務(wù)是從ORACLE的海量數(shù)據(jù)中進(jìn)行查詢(xún),得到數(shù)據(jù)之間的某些規(guī)律。數(shù)據(jù)庫(kù)管理員需要為這種類(lèi)型的ORACLE數(shù)據(jù)庫(kù)著重考慮下述參數(shù):

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

是否采用并行SQL查詢(xún)以提高查詢(xún)效率?

是否采用PL/SQL函數(shù)編寫(xiě)存儲(chǔ)過(guò)程?

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

三、SQL語(yǔ)句的調(diào)整原則

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

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

語(yǔ)句A:SELECTdname,deptnoFROMdeptWHEREdeptnoNOTIN

(SELECTdeptnoFROMemp);

語(yǔ)句B:SELECTdname,deptnoFROMdeptWHERENOTEXISTS

(SELECTdeptnoFROMempWHEREdept.deptno=emp.deptno);

這兩條查詢(xún)語(yǔ)句實(shí)現(xiàn)的結(jié)果是相同的,但是執(zhí)行語(yǔ)句A的時(shí)候,ORACLE會(huì)對(duì)整個(gè)emp表進(jìn)行掃描,沒(méi)有使用建立在emp表上的deptno索引,執(zhí)行語(yǔ)句B的時(shí)候,由于在子查詢(xún)中使用了聯(lián)合查詢(xún),ORACLE只是對(duì)emp表進(jìn)行的部分?jǐn)?shù)據(jù)掃描,并利用了deptno列的索引,所以語(yǔ)句B的效率要比語(yǔ)句A的效率高一些。

2、選擇聯(lián)合查詢(xú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例子中,程序員首先需要選擇要查詢(xún)的主表,因?yàn)橹鞅硪M(jìn)行整個(gè)表數(shù)據(jù)的掃描,所以主表應(yīng)該數(shù)據(jù)量最小,所以例子中表A的acol列的范圍應(yīng)該比表B和表C相應(yīng)列的范圍小。

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

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

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ǔ)過(guò)程“釘”在SQL區(qū)中而不被換出內(nèi)存,程序員對(duì)于經(jīng)常使用并且占用內(nèi)存很多的存儲(chǔ)過(guò)程“釘”到內(nèi)存中有利于提高最終用戶(hù)的響應(yīng)時(shí)間。

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

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

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

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

數(shù)據(jù)庫(kù)管理員還可以通過(guò)查看v$sesstat數(shù)據(jù)字典來(lái)獲得當(dāng)前連接ORACLE數(shù)據(jù)庫(kù)各個(gè)會(huì)話占用的CPU時(shí)間,從而得知什么會(huì)話耗用服務(wù)器CPU比較多。

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

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

SELECT*FROMV$SYSSTATWHERENAMEIN

('parsetimecpu','parsetimeelapsed','parsecount(hard)');

這里parsetimecpu是系統(tǒng)服務(wù)時(shí)間,parsetimeelapsed是響應(yīng)時(shí)間,用戶(hù)等待時(shí)間,waitetime=parsetimeelapsed_parsetimecpu

由此可以得到用戶(hù)SQL語(yǔ)句平均解析等待時(shí)間=waitetime/parsecount。這個(gè)平均等待時(shí)間應(yīng)該接近于0,如果平均解析等待時(shí)間過(guò)長(zhǎng),數(shù)據(jù)庫(kù)管理員可以通過(guò)下述語(yǔ)句

SELECTSQL_TEXT,PARSE_CALLS,EXECUTIONSFROMV$SQLAREA

ORDERBYPARSE_CALLS;

來(lái)發(fā)現(xiàn)是什么SQL語(yǔ)句解析效率比較低。程序員可以?xún)?yōu)化這些語(yǔ)句,或者增加ORACLE參數(shù)SESSION_CACHED_CURSORS的值。

2、數(shù)據(jù)庫(kù)管理員還可以通過(guò)下述語(yǔ)句:

SELECTBUFFER_GETS,EXECUTIONS,SQL_TEXTFROMV$SQLAREA;

查看低效率的SQL語(yǔ)句,優(yōu)化這些語(yǔ)句也有助于提高CPU的利用率。

3、數(shù)據(jù)庫(kù)管理員可以通過(guò)v$system_event數(shù)據(jù)字典中的“l(fā)atchfree”統(tǒng)計(jì)項(xiàng)查看ORACLE數(shù)據(jù)庫(kù)的沖突情況,如果沒(méi)有沖突的話,latchfree查詢(xún)出來(lái)沒(méi)有結(jié)果。如果沖突太大的話,數(shù)據(jù)庫(kù)管理員可以降低spin_count參數(shù)值,來(lái)消除高的CPU使用率。

五、內(nèi)存參數(shù)的調(diào)整

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

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

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

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

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

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

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

SELECTname,valueFROMv$sysstatWHEREnameIN('dbblockgets','consistentgets','physicalreads');

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

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

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

selectname,valuefromv$sysstatwherenamein('redoentries','redologspacerequests');

查看日志緩沖區(qū)的使用情況。查詢(xún)出的結(jié)果可以計(jì)算出日志緩沖區(qū)的申請(qǐng)失敗率:

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

昆明北大青鳥(niǎo)java培訓(xùn)班轉(zhuǎn)載自網(wǎng)絡(luò)如有侵權(quán)請(qǐng)聯(lián)系我們感謝您的關(guān)注謝謝支持

網(wǎng)站標(biāo)題:oracle怎么性能優(yōu)化 oraclesql性能優(yōu)化
當(dāng)前地址:http://jinyejixie.com/article24/hpccje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、域名注冊(cè)企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
周宁县| 南丰县| 阿拉善盟| 临泽县| 泰宁县| 西平县| 兴仁县| 申扎县| 汝城县| 泰宁县| 北京市| 通许县| 文水县| 博罗县| 怀远县| 桂阳县| 太白县| 长垣县| 甘孜| 沙洋县| 卢龙县| 漠河县| 军事| 青冈县| 太湖县| 龙口市| 莱西市| 京山县| 偃师市| 加查县| 双柏县| 南漳县| 淳安县| 交城县| 灵川县| 林口县| 大荔县| 罗源县| 中宁县| 郓城县| 渭源县|