羅雨
遼寧錦州渤海大學信息科學與技術學院
Oracle數據庫查詢優化方法研究
羅雨
遼寧錦州渤海大學信息科學與技術學院
現今,Oracle數據庫在很多的領域中都得到了廣泛的應用,并且在目前數據庫市場以及企事業信息化系統的起到了重大的作用。在許多的信息化系統中首先選擇的產品是Oracle數據庫。隨著因特網的飛速發展,很多的信息的形式以電子化和數字化出現,而且這些信息的存儲通常采用的是Oracle數據庫。在現實的許多應用系統中,數據查詢的速度效率如何都直接對用戶評價系統有著重要的影響。
Oracle 數據庫 優化
1.1 SQL查詢語句的執行過程
在Oracle中SQL語句的執行是自動的,大部分的用戶不會關注每一個階段的具體執行細節。然而,充分地了解到執行的每一個階段可以有利于提高找到低性能的SQL語句的效率,并且可以增強書寫高效SQL語句的效率,從而讓問題得到解決。每一個SQL語句所包括的有分析語法、執行語句以及數據讀取等。
1.2 Oracle查詢優化器
作為非過程化的語言,在SQL語句的執行中用戶輸入取數據的指令,關于取數據的方式包括了索引取數據以及全表掃描取數據,而這些都是數據庫內部的優化器決定的。Oracle優化器的目的主要是為了訪問SQL數據的有效路徑,這樣能夠大大地降低語句執行過程中的花費的開銷。在Oracle發展中,優化器主要包括了兩類,分別是基于成本以及基于規則的優化器。這兩者的最大區別就是代價的衡量方法不一樣。
1.2.1 基于成本優化器
基于成本的優化方法指的是選擇一個集成數據庫內核里面的成本估算器從而估算出在整個執行計劃中所有需要投入的資金成本,其中成本的大小主要是取決于SQL語句執行所用的資源以及SQL語句執行所采取的時間。通過查詢優化器從而將成本花銷最小的執行計劃選出來。采用基于成本優化器,基礎數據是選擇的分析數據是帶著表以及索引,這些分析數據的采集所用到的命令是ANALYZE。關于Oracle 9i,當統計數據不存在的時候,就用到缺省值,從而會造成在選擇優化器方面的錯誤執行計劃,這樣會給SQL語句查詢的性能帶來負面的影響。在OraclelOg之后,數據的分析就逐漸演變為自動數據,這樣會大大地減輕DBA的負荷,然而在一些特定的環境下,可能要采取相關的手工分析。隨著Oracle數據庫的不斷發展,Oracle的版本也逐漸的更新,基于成本優化器的發展也得到了很大的提高。
2.1 Oracle數據庫體系結構
Oracle數據庫的體系結構的與數據查詢性能以及查詢速度有著很大的聯系。Oracle9i數據庫的相關服務器給予了良好的信息管理的氛圍,而且該信息管理能夠將很多的數據存儲起來,同時還能夠滿足用戶快速訪問這些數據的需求。Oracle9i數據庫的組成包括考慮Oracle數據庫物理文件與Oracle實例。Oracle的體系結構與Oracle數據庫性能有著直接的聯系,能夠對數據的查詢性進行改善與調整。基于該平臺上能夠在一定程度上增強數據庫語句的查詢速率。
Oracle物理文件中所包括的內容有初始化參數文件、日志文件、以及控制文件和數據文件等。數據文件的作用是存放具全部的數據信息。數據文件和表空間是一一對應的關系,而且每個表空間和數據文件是一對多的對應關系。重做日志文件中主要記錄的是所有數據的變化情況,而且這些數據是按照一定的順序保存的,一般情況下重做日志文件的保存和數據文件的保存所放置的地方是不一樣的。當系統出現了意外的故障時候,日志文件恢復數據庫的事務是按照正確的順序進行的。為了增強可靠性,Oracle9i中的重做日志文件要達到兩個以上才可以正常運行,當服務器運行的模式是處于歸檔日志情況下,那么通過歸檔在歸檔日志文件中寫入日志,從而很大程度上確保了數據庫是在安全的模式下運作。Oracle9i在整個數據庫的構建中同時也能夠構建控制文件,這里的控制文件內部中具體的內容主要有數據的名稱附帶著重做日志文件全部的路徑名和全部的數據庫文件。這對于數據庫中控制文件有意義非凡的影響。
數據庫性能的瓶頸是磁盤I/O,如果能夠將瓶頸問題解決的話,就能夠在一定程度上提高性能。配置數據庫的重要性能準則就是要盡可能地將磁盤I/O減少,并且使得多個磁盤驅動器之間的負荷進行平衡,而且盡可能采用本地管理表空間。此外在Oracle數據的性能提高過程中,如果Oracle的體系結構可以得到很大地簡化,可以使得數據庫的空間得到改善。按照安裝選項選擇,Oracle軟件在安裝的時候能夠自動地構建出標準的Oracle的體系結構。配置數據庫的時候,數據庫管理員正確地布局數據庫的物理文件以及相應的邏輯對象。
3.1 Oracle數據庫物理文件
Oracle實例中的進程充當著重要的作用,Oracle實例可以確保交換Oracle實例和物理文件,從而保證整個系統可以成功運行。后臺進程的作用是維護與實現數據庫的物理結構以及存儲結構兩者的關系。Oracle實例的數量和數據庫的配置有著直接的關系。數據庫管理Oracle實例中,所做的系統管理工作比較少。數據庫的警告日志常記錄的是對后臺進程有著重要影響的問題。
3.2 網絡環境
Oracle9i的網絡產品是OracleNet,通過TNS,Net的作用是連接服務器和客戶機。OracleNet協議適配器所進行的操作是把普通的網絡操作進行特定協議的轉換,采用第三方或者系統所提供的網絡軟硬件能夠將數據傳輸在兩臺計算機之間。OracleNet連接機制可以分為以下步驟進行:
OracleNet的特點是透明性的網絡、透明的位置、獨立的協議等。許多的數據庫應用程序使用場合通常是網絡環境。而且網絡性能的是否好和數據查詢的速度有著重要的聯系。網絡最大目標的調整主要是利用數據庫自身局部的功能進而帶來網絡的數據流量減少,進而減少依賴網絡,防止數據性能問題的產生。
4.1 系統優化措施
如果索引構造是足夠合理,那么這在一定程度上使得數據庫查詢速度得到提高。也使得滿足請求的物理讀取總數得到減少。一般情況下,讀取索引塊能夠對索引表中的數據的行與塊進行直接地讀取,相比于整個表的讀取更加地高效。
4.1.1 Oracle的主要索引類型
Oracle中用的比較多的索引就是B樹索引。該索引存在的形式是樹型存儲。根節點是索引的基礎,根節點中的信息有其他的指針,這些指針指向的是索引中下一層。而且該索引的下一層的組成是分枝節點,葉子節點是分枝節點中的最后一個,葉子節點的索引項中存儲的信息有列值的行所相應的ROWID。連接葉子節點和葉子節點的左右葉子節點,從而在索引的前后進行范圍的搜索。當更改索引列中的數據時候,維護B樹索引實現起來比較容易,而且效率很快,該B樹索在聯機事務的應用處理方面有很大的影響。B樹索引根據不同的事務進行對應的處理,從而增強SQL語句中查詢的性能。
4.2 系統的I/O效率提高
磁盤I/O是影響數據庫性能的重大因素,而且也對數據查詢速率造成一定的影響。所以.在規劃物理文件的時候,一般情況下會選擇對數據查詢性能有所提高的方法,比如在獨立的磁盤中存儲訪問量大的數據,并且對于在同一個表空間中對數據文件進行分類處理,分別放置在不一樣的磁盤上,從而給索引建立出獨自的表空間,進而防止由于日志切換過于頻繁,建立用于排序使用的臨時表空間。能夠按照具體的情況從而分析找出數據查詢的瓶頸,選擇合理的方法進而將數據的查詢性能提高。運行數據庫系統中,會出現許多的變化因素,例如增大數據文件,與索引,而且也可能改變數據庫的結構。所以,針對表空間以及布局數據文件需要制定出更加有效的計劃。
4.3 全表掃描調整
數據查詢通常用到了全表掃描,當處理不恰當的時候,全表掃描就會導致數據讀取太多,從而出現I/O。首先調整全表掃描,能夠通過SQL的修改,其次我們也能夠根據索引的建立、參數初始化的修改等實現。
4.4 分析統計表
Oracle數據庫在SQL語句執行方案的選擇中,需要根據數據字典中的各種對象信息的統計的存儲,通過優化器從而選擇最優的方案,需要考慮到信息的統計。所以常統計收集工作,進一步地提高查詢的相關速度。統計分析方法能夠選擇analyze命令,另外也能夠運用DBMS STATS包。
4.5 使用DBMS STATS包
通常analyze命令是一次處理一個表或者一個索引,當收集的表有多個的時候,索引以至于統計分析工作區中的數據信息,就需要用到DBMS-STATS代碼包。而且在使用DBMS STATS之前,就需要先用sysdba的方式成功進入到數據庫中,運行bmsstat.Sql以及prvtstat.plb腳本,腳本中包括了數據庫在執行過程中的定義以及申明。
結語:軟件供應商紛紛在軟硬件平臺投資了很多的資金成本,目的是增強查詢數據的速率。本文主要是基于Oracle數據庫進行查詢的優化。本文完成了數據查詢語句的整個過程,接著根據Oracle數據庫的特征,從數據的優化目的出發,重點研究了Oracle實例以及Oracle物理文件對SQL語句的查詢速率的影響。本文主要分析了影響Oracle數據庫的性能因素,從多個因素方面出發研究數據庫的查詢優化,并且對數據庫的環境應用也進行了研究。
[1] 楊小艷, 尹明, 戴學豐. Oracle數據庫查詢優化方法研究[J]. 計算機與現代化, 2008(4):4-7
[2] 張輝, 趙郁亮, 徐江,等. 基于Oracle數據庫海量數據的查詢優化研究[J]. 計算機技術與發展, 2012, 22(2):165-167
[3] 張學義, 王觀玉, 黃雋. 基于Oralce數據庫SQL查詢優化研究[J]. 制造業自動化, 2011, 33(2):116-118
[4] 彭建明, 生本有. ORACLE數據庫性能優化的方法研究[J].醫學信息:醫學與計算機應用, 2004, 17(8):485-486