oracle資料庫的優化方案
Ⅰ ORACLE資料庫性能優化概述
實際上 為了保證ORACLE資料庫運行在最佳的性能狀態下 在信息系統開發之前就應該考慮資料庫的優化策略 優化策略一般包括伺服器操作系統參數調整 ORACLE資料庫參數調整 網路性能調整 應用程序SQL語句分析及設計等幾個方面 其中應用程序的分析與設計是在信息系統開發之前完成的
分析評價ORACLE資料庫性能主要有資料庫吞吐量 資料庫用戶響應時間兩項指標 資料庫吞吐量是指單位時間內資料庫完成的SQL語句數目 資料庫用戶響應時間是指用戶從提交SQL語句開始到獲得結果的那一段時間 資料庫用戶響應時間又可以分為系統服務時間和用戶等待時間兩項 即
資料庫用戶響應時間=系統服務時間 + 用戶等待時間
上述公式告訴我們 獲得滿意的用戶響應時間有兩個途徑 一是減少系統服務時間 即提高資料庫的吞吐量 二是減少用戶等待時間 即減少用戶訪問同一資料庫資源的沖突率
性能優化包括如下幾個部分
ORACLE資料庫性能優化之一 調整數據結構的設計
這一部分在開發信息系統之前完成 程序員需要考慮是否使用ORACLE資料庫的分區功能 對於經常訪問的資料庫表是否需要建立索引等
ORACLE資料庫性能優化之二 調整應用程序結構設計
這一部分也是在開發信息系絕配兆統之前完成 程序員在這一步需要考慮應用程序使用什麼樣的體系結構 是使用傳統的Client/Server兩層體系結構 還是使用Browser/Web/Database的三層體系結構 不同的應用程序體系結構要求的資料庫資源是不同的
ORACLE資料庫性能優化之三 調整資料庫SQL語句
應用程序的執行最終將歸結為資料庫中的SQL語句執行 因此SQL語句的執行效率最終決定了ORACLE資料庫的性能 ORACLE公司推薦使用ORACLE語句優化器(Oracle Optimizer)和行鎖管理器(row level manager)來調整優化SQL語句
ORACLE資料庫性能優化之四 調整伺服器內存分配
內存分配是在信息系統運行過程中優化配置的 資料庫管理員可以根據資料庫運行狀況調整資料庫系統全局區(SGA區)的數據緩沖區 日誌緩沖賣慶區和共享池的大小 還可以調並租整程序全局區(PGA區)的大小 需要注意的是 SGA區不是越大越好 SGA區過大會佔用操作系統使用的內存而引起虛擬內存的頁面交換 這樣反而會降低系統
ORACLE資料庫性能優化之五 調整硬碟I/O 這一步是在信息系統開發之前完成的
資料庫管理員可以將組成同一個表空間的數據文件放在不同的硬碟上 做到硬碟之間I/O負載均衡
ORACLE資料庫性能優化之六 調整操作系統參數
例如 運行在UNIX操作系統上的ORACLE資料庫 可以調整UNIX數據緩沖池的大小 每個進程所能使用的內存大小等參數
lishixin/Article/program/Oracle/201311/17687
Ⅱ Oracle資料庫系統調優方法
Oracle 資料庫廣泛應用在社會的各個領域,特別是在Client/Server模式的應用,但是應用開發者往往碰到整個系統的性能隨著數據量的增大顯著下降的問題,為了解決這個問題,從以下幾個方面:資料庫伺服器、網路I/O、應用程序等對整個系統加以調整,充分發揮Oracle的效能,提高整個系統的性能。
1 調整資料庫伺服器的性能
Oracle資料庫伺服器是整個系統的核心,它的性能高低直接影響整個系統的性能,為了調整Oracle資料庫伺服器的性能,主要從以下幾個方面考慮:
1.1 調整
操作系統以適合Oracle資料庫伺服器運行
Oracle資料庫伺服器很大程度上依賴於運行伺服器的操作系統,如果操作系統不能提供最好性能,那麼無論如何調整,Oracle資料庫伺服器也無法發揮其應有的性能。
1.1.1 為Oracle資料庫伺服器規劃系統資源
據已有計算機可用資源, 規劃分配給Oracle伺服器資源原則是:盡可能使Oracle伺服器使用資源最大化,特別在Client/Server中盡量讓伺服器上所有資源都來運行Oracle服務。
1.1.2 調整計算機系統中的內存配置
多數操作系統都用虛存來模擬計算機上更大的內存,運告它實際上是硬碟上的一定的磁碟空間。當實際的內存空間不能滿足應用軟體的要求時,操作系統就將用這部分的磁碟空間對內存中的信息進行頁面替換,這將引起大量的磁碟I/O操作,使整個伺服器的性能下降。為了避免過多地使用虛存,應加大計算機的內存。
1.1.3 為Oracle資料庫伺服器設置操作系統進程優先順序
不要在操作系統中調整Oracle進程的優先順序,因為在Oracle資料庫系統中,所有的後台和前台資料庫伺服器進程執行的是同等重要的工作,需要同等的優先順序。所以在安裝時,讓所有的資料庫伺服器進程都使用預設的優先順序運行。
1.2 調整內存分配
Oracle資料庫伺服器保留3個基本的內存高速緩存,分別對應3種不同類型的數據:庫高速緩存,字典高速緩存和緩沖區高速緩存。庫高速緩存和字典高速緩存一起構成共享池,共享池再加上緩沖區高速緩存便構成了系統全程區(SGA)。SGA是對資料庫數據進行快速訪問的一個系統全程區,若SGA本身需要頻繁地進行釋放、分配,則不能達到快速訪問數據的目的,因此應把SGA放在主存中,不要放在虛擬內存中。內存的調整主要是指調整組成SGA的內存結構的大小來提高系統性能,由於Oracle資料庫伺服器的內存結構需求與應用密切相關,所以內存結構的調整應在磁碟I/O調整之前進行。
1.2.1 庫緩沖區的調整
庫緩沖區中包含私用和共享SQL和PL/SQL區,通過比較庫緩沖區的命中率決定它的大小。要調整庫緩沖區,必須首先了解該庫緩沖區的活動情況,庫緩沖區的活動統計信息保留在動態性能表v$librarycache數據字典中,可通過查詢該表來了解其活動情況,以決定如何調做敬整。
1.2.2 數據字典緩沖區的調整
數據字典緩沖區包含了有關資料庫的結構、用戶、實體信息。數據字典的命中率純悄慎,對系統性能影響極大。數據字典緩沖區的使用情況記錄在動態性能表v$librarycache中,可通過查詢該表來了解其活動情況,以決定如何調整。
1.2.3 緩沖區高速緩存的調整
用戶進程所存取的所有數據都是經過緩沖區高速緩存來存取,所以該部分的命中率,對性能至關重要。緩沖區高速緩存的使用情況記錄在動態性能表v$sysstat中,可通過查詢該表來了解其活動情況,以決定如何調整。
2 調整 Client/Server 模式下的網路 I/O
Client/Server環境中的應用處理是分布在客戶應用程序和資料庫服務程序之間的。在 Client/Server環境中Client與Server之間的網路I/O是整個系統性能提高的瓶頸,一個客戶應用程序引起的網路I/O越少,應用及整個系統的性能越好。減少網路I/O的最重要的一條原則:將應用邏輯集中在資料庫伺服器中。
2.1 使用Oracle資料庫的完整約束性
當為應用建表時,應當為一些有特殊要求的數據加上適當的完整性約束,這樣就能實現由資料庫本身而不是應用程序來約束數據符合一定的條件。資料庫伺服器端的完整約束的執行操作是在比SQL語句級別更低的系統機制上優化,它與客戶端無關,只在伺服器中運行,不需在Client 端和Server端之間傳遞SQL語句,有效地減輕網路I/O負擔。
2.2 使用資料庫觸發器
完整約束性只能實現一些較簡單的數據約束條件,對一些較復雜的事物處理規則就無能為力,這時最好不要在應用程序中實施復雜的程序控制,而是應當採用資料庫觸發器來實施復雜的事物規則。資料庫觸發器能實現由資料庫本身,而不是應用程序,來約束數據符合復雜的事物處理規則,並且容易創建,便於管理,避免大量的網路I/O。
2.3 使用存儲過程、存儲函數和包
Oracle的存儲過程和存儲函數是命名的能完成一定功能並且存儲在Server端的PL/SQL的集合。包是一種把有關的過程和函數組織封裝成一個資料庫程序單元的方法。它們相對於應用程序的過程、函數而言,把SQL命令存儲在Server端。使用存儲過程和存儲函數,應用程序不必再包含多個網路操作的SQL語句去執行資料庫伺服器操作,而是簡單調用存儲過程和存儲函數,在網路上傳輸的只是調用過程的名字和輸出結果,這樣就可減少大量的網路I/O。
3 應用程序的調整
3.1 SQL語句的優化
SQL語句的執行速度,可以受很多因素的影響而變化。但主要的影響因素是:驅動表、執行操作的先後順序和索引的運用。可以由很多不同的方法間接地改變這些因素,以達到最優的執行速度。這里主要探討當對多個表進行連接查詢時應遵循的優化原則:
3.2 建立和使用視圖、索引
利用視圖可以將基表中的列或行進行裁減、隱藏一部分數據,並且能夠將涉及到多個表的復雜查詢以視圖的方式給出,使應用程序開發簡潔快速。利用索引可以提高查詢性能,減少磁碟 I/O,優化對數據表的查詢,加速SQL語句的執行。但任何時候建立索引都能提高性能,何時建立索引應當遵循以下原則:該表常用來在索引列上查詢,該表不常更新、插入、刪除等操作,查詢出來的結果記錄數應控制在原表的2%~4%。
3.3 使用 Oracle 的數組介面
當一個客戶應用程序插入一行或用一個查詢來向伺服器請求某行時,不是發送具有單個行的網路包,而是採用數組處理,即把要插入的多個行或檢索出的多個行緩沖在數組中,然後通過很少的幾個包就可在網上傳送這些數組。例如,一個給定的Select語句返回2000行數據,每行平均大小為40個位元組,數據包的大小為4kB,而數組大小參數(arraysize)設置為20 ,則需從伺服器發送100個數據包到客戶機。如果簡單地把(arraysize)設置為2000,那麼同樣的操作只需要傳送 20個數據包。這樣就減少了網路的傳輸量,提高了所有應用的性能。
4 總結
我們在開發應用程序時,遵循上述的方法和原則,對系統進行調整,收到了令人滿意的效果。但是應當指出,由於客戶機、網路、伺服器這3個相互依存的組成部分都必須調整和同步才能產生最佳的性能,因此還應根據系統的具體情況,具體分析和調整。
Ⅲ Oracle等資料庫數據量特別大的時候怎樣從程序和SQL語句方面優化使查詢速度加快
一般最常用的大數據量優化:
1、創建分區表,使查詢時的大表盡量分割成小表。Oracle提供范圍分區、列表分區、Hash分區以及復合分區,具體選擇哪種分區最優,需要根據你的業務數據來確定。
2、創建索引,創建合適的索引可以大大提高查詢速度。但是你的這張大表如果會頻繁的進行update、insert等操作,索引會導致這些操作變慢。就有可能需要進行動態索引的使用。
3、優化復雜SQL;對復雜的SQL進行合理的優化,這個有時候也需要根據你的數據情況來優化,可以參考一些SQL語句優化方面的文檔。