陳君
摘要
隨著各類信息系統業務邏輯的不斷豐富、各個功能子模塊復雜度的不斷提升,最初設計的數據庫系統的性能往往會不斷的惡化,為了保障各類信息的穩定可靠運行,對數據庫進行優化處理成為關鍵所在。本文結合在企業應用中最為常見的Oracle數據庫,從優化必要性、相關影響因素以及優化措施等方面予以簡要的探討,優化數據庫應從數據庫運行的軟硬件環境、數據庫全局性配置以及數據庫SQL文件以及相應的SQL執行過程追蹤等多個方面予以綜合性保障予以實現。
【關鍵詞】計算機 Oracle 數據庫 優化 措施
1Oracle數據庫簡介
Oracle數據庫是Oracle(甲骨文)公司的核心產品,其產品作為大型關系型數據庫擁有良好的性能而被業界廣泛的應用,作為應用最為廣泛的數據庫之一,Oracle數據庫展現了其卓越的設計理念和良好應用性能,目前Oracle數據庫的最新版本是Oracle Database 12c,該版本順應當前云計算應用的發展,對于快速部署和管理云應用有著良好的平臺支撐。Oracle數據庫是傳統的關系型數據庫,無論是CS架構還是BS架構的服務運行模式中都有著可靠的性能,其高可移植性適用于高吞吐量的應用系統。隨著計算機硬件資源和軟件系統的不斷豐富,Oracle數據庫可以穩定運行于各類微機平臺上,進一步展現了其強大的平臺適應性。要充分發揮Oracle數據庫性能,做好相關優化處理工作是十分必要的,下文將以Oracle數據庫優化處理為主要內容對相關進行簡要的論述。
2Oracle數據庫優化必要性以及影響因素分析
2.1Oracle數據庫優化必要性分析
數據庫作為各類信息系統的數據存儲支撐發揮著重要的作用,隨著系統業務量的不斷增長、系統用戶的膨脹以及各個系統模塊接口復雜度的提升,數據庫系統的性能往往會持續惡化,因此為了保障各類信息系統的穩定可靠運行,對數據庫進行必要的優化處理成為關鍵。優化數據庫系統是綜合數據庫運行的軟硬件環境以及數據庫各種結構化操作語句分析設計的綜合性技術應用,涉及到了諸多的方面。
另外,隨著云計算技術的發展,軟硬件資源的彈性供給能力不斷增強,數據庫系統作為底層的系統軟件支撐是否還需要進行必要的優化處理,答案是肯定的,云計算技術雖然提供了高可擴充的軟硬件資源,但也應看到如今信息系統的業務量呈幾何爆炸式的增長現實需求,單純的依靠提升軟硬件環境是遠遠不能滿足業務以及功能發展需求,鑒于此Oracle數據庫的優化設計應持續推進以適應當前高并發、大業務的功能需求發展。
2.2Oracle數據庫性能影響因素分析
如上文所述,Oracle數據庫性能影響因素是綜合性的,不是單純的SQL設計或者內存分配不均所造成的,根據Oracle數據庫運行的軟硬件環境以及數據庫自身的影響因素分析,通常以下幾個方面是制約其性能發揮關鍵要素:首先是硬件資源的應用,尤其是CPU(處理器)和內存的不合理分配,CPU是數據操作和計算機資源控制的核心,數據庫系統運行過程中最為常見的CPU問題就是CPU資源占用過多,導致Oracle數據庫無法分配可用的計算和控制資源引發的數據阻塞問題,而內存分配問題則更多的是其分配不合理,頻繁的數據塊交換引發的操作系統資源大量浪費;其次則是軟件資源的不合理應用,從Oracle數據庫運行和自身軟件應用來分析,常見的軟件資源問題包括操作系統軟件以及Oracle自身設置問題,操作系統作為抽象和管理整個計算機系統資源的系統軟件,發揮著關鍵的作用。Oracle作為大型的數據庫系統要正常的運行需要操作系統進行合理的設置,以滿足其功能性和性能性的需求,另外,數據庫自身的系統設計,如表空間能否合理分配,緩沖池是否進行了有效利用等都是軟件環境對于數據庫系統的重要影響;最后則是數據庫邏輯設計對于數據庫系統性能的影響,數據庫邏輯設計的核心在于SQL語句的合理化設計,這也是各類信息系統進行數據持久化操作的主要方式,如大量的全表掃描、多項目主鍵應用、索引等優化處理手段的不合理應用、I/O的規劃缺失等都容易造成SQL邏輯設計問題,使得其結構化查詢效率較低,引發一定的數據阻塞問題,進而影響其數據庫的性能發揮。
2.3Oracle數據庫優化的目標分析
2.3.1壓縮數據庫響應時間
數據庫響應時間主要是指從用戶或信息系統發出SQL到獲得相應結果集的花費,通常是以時間的方式進行描述的(單位以ms來表示),作為核心的數據庫優化目標,響應時間是其關鍵的指標,這是最為直觀的性能優化結果,對提升用戶體驗有著重要的意義,當然,由于不同的SQL語句在進行數據庫操作時由于其請求方式或者數據表級的不同,其響應時間必然是不同的,因此,在進行響應時間的統計時是進行參照量的比較,這是需要注意的地方。
2.3.2吞吐量以及命中率的提升
吞吐量是單位時間內能夠完成的SQL請求數量的能力(單位是TPS),反應了數據庫處理相關業務量的能力,同樣是優化數據庫的關鍵目標。單位時間內,數據庫能夠完成的吞吐量越大,一定程度上能夠反應出其高效的數據庫處理能力。
命中率則是訪問特定數據庫資源的成功率,這種資源包括緩沖區命中率、解析命中率等等,命中率是保障數據庫資源能夠被合理訪問關鍵,能否命中的關鍵在于系統相關資源的設置合理性,作為數據庫高效處理數據的能力,命中率也是非常關鍵的因素。
2.3.3磁盤應用優化
磁盤是各種文檔資源和程序數據的存儲區域,與內存進行I/O操作的主要部件,因此在進行數據庫優化時,能否合理匹配內存與I/O設備速度不匹配、磁盤文件操作系統的規劃合理性是非常關鍵的性能指標,減少頻繁的置換操作,降低由于讀寫磁盤I/O對于引發的系統響應時間,鑒于此一些構建于內存系統的數據庫結構也是近年來高并發系統應用的主流,由此,優化磁盤應用也是重要的數據庫優化目標。endprint
2.3.4內存以及CPU資源的有效利用
CPU資源直接操作的存儲設備包括寄存器、高速緩存以及內存資源,其中高速緩存cache主要是基于二八定律、匹配CPU與內存之間的速度而產生的,因此,在進行數據庫系統的應用時,應加強對CPU資源以及內存資源的監測以確保其應用的合理性,對于CPU的控制主要是保障其系統資源的占用率不要太高而無法處理用戶的請求;而內存的應用則是優化數據資源的分布,提升數據命中率、減少與I/O設備的頻繁數據交換。
3Oracle數據庫優化措施分析
3.1對Oracle數據庫運行所依賴的軟硬件環境進行優化
(1)從硬件角度而言,通過升級硬件的手段來提升數據庫系統的性能提升是最為常見的手段,具體的升級措施包括,更換處理能力更強、頻率數更高的處理器、擴充內存容量、提升網絡帶寬、通過硬件服務器進行I/O數據交換能力的提升、通過多開路的方式實現數據庫負載均衡處理。根據統計數據而言,通過軟硬件換件的升級換代,能夠提升數據庫系統的百分之三十以上的性能。就目前而言,一種更為有效的資源分配方式正改變著硬件環境對于Oracle數據庫系統的運作方式,即云計算平臺的應用,通過動態的監控現有環境的CPU、內存以及硬盤資源,根據業務量的增長對硬件環境進行彈性化處理,一方面有效的利用了現有的硬件資源、同時也實現了可靠的硬件擴充功能。
(2)則是操作系統軟件的優化處理,操作系統作為支撐Oracle數據庫運行的系統軟件,虛擬化了各種硬件資源,為Oracle數據庫的運行提供了系統接口,因此作為承上啟下的操作系統性能的優劣直接決定當前數據庫系統的性能,例如減少服務器的運行服務,通過禁用不必要的軟件優化Oracle運行環境、檢測監控內存、CPU的實時運行情況,對于超負荷運行的條件予以統計,及時關閉不必要的軟件以及服務;除此之外,還建議通過增加虛擬內存的容量、內存進行調優處理、對系統緩存數據進行必要的清理等手段提升整個數據庫運行環境的穩定、可靠性。
3.2優化數據庫配置相關I/O數據
通過調整I/O進行優化Oracle數據庫處理能力。首先,Oracle作為具有典型I/O特征的數據庫程序,應合理的進行I/O數據調整,一方面從并發性的角度而言,應通過對表空間進行分磁盤處理,通過有效的利用不同磁盤數據讀寫的并發能力、減少同一磁盤的利用率,提升數據庫服務的并行性;另一方面,Oracle數據庫是多進程程序,諸多進程讀寫數據文件,由此在數據庫設計之處就應考慮到由于頻繁I/O引發的數據文件性能問題。其次,對于Oracle程序而言,建議通過RAID Controller進行磁盤控制,對于碎片過多的磁盤首先應進行碎片整理、最好不要使用經過加密或壓縮處理后的磁盤控制,以滿足Oracle數據庫服務管理對于磁盤I/O的要求。總之,必要的I/O配置是基于Oracle數據庫特點進行優化處理的關鍵手段應予以重視。
除此之外,對SGA(System Global Area)區塊數據進行優化配置,也是優化Oracle數據庫的關鍵,SGA作為全局性的Oracle數據服務包含了豐富類型的配置信息,如sharedpool(共享池)、the data dictionary cache(數據字典緩存)、the data base buffer cache(數據庫高速緩存)等諸多影響全局的配置信息。常見的優化處理手段包括,將SGA存放于內存之中,提升其讀寫效率、對日志信息進行定期的檢查、根據系統運行情況合理的分配給各個用戶使用內存以共享池數據、對于緩沖區數據進行度量和優化處理等。
總之,優化數據庫配置相關的I/O文件也是常見的優化數據庫性能的重要舉措應予以重視。
3.3優化Oracle數據庫SQL邏輯
對于Oracle數據庫的核心應用而言,各種SQL語句的操縱是進行業務邏輯功能實現的核心,也是數據庫實現數據持久化功能的基礎。因此,做好Oracle數據庫SQL邏輯的優化處理對于提升整個數據庫性能有著至關重要的作用。就典型的Oracle數據庫SQL邏輯操作而言主要有以下幾種類型:首先,避免對的使用,在查詢語句中常見的所有列查詢通常都是以“select*”出現的,本文建議應避免使用“*”,一方面由于數據庫對于的解析處理需要耗費一定的系統開銷、另一方面在進行相應列轉換時也會消耗一定系統資源,導致了整個SQL語句的執行效率不高;其次,在避免使用“having”進行條件過濾,盡量使用where進行予以代替,因為having先對結果集進行分組處理結束之后才進行的過濾條件,而where條件查詢可以有效的減少分組集數量,從而提高整個查詢效率;再次,避免使用delete語句,而應用truncate予以替代,這主要是由于在進行delete操作之后,首先會將數據存儲在回滾數據緩存區,在進行數據刪除,而truncate直接對數據進行刪除操作,節約了運行時間;除此之外,建議使用“exists”,避免使用“in”,這主要是由于“exists”僅僅判斷返回行是否存在于存在航,“in”操作符還會檢查列屬性的存在與否,這樣必然會引起更多的系統處理消耗,從而降低數據庫系統吞吐量。當然,在進行數據檢索的時候,有效的利用索引(需要耗費一定的系統資源),能夠快速處理ROWID值,從而提高數據查詢數據速率。對于Oracle數據庫SQL邏輯的優化處理是相當多的,用戶應根據自身的實際情況進行合理的處理,本文只是給出一定的優化思路,在此就不一一進行列舉了。
3.4做好Oracle數據庫系統執行過程的追蹤
一般對于Oracle數據執行過程的追蹤主要有兩種方式,一種即“Explain Table”的方式,另一種則是通過TKPROF工具進行實施。在進行“Explain Table”主要是對SQL語句執行計劃的各個步驟都在“Explain Table”中予以呈現,從記錄表中的數據可以看出,整個“優化器類型”、“執行代價”、“資源代價”等關鍵信息,從而根據記錄信息對相關數據進行優化處理。TKPROF工具的使用,是追蹤SQL執行全過程,給出優化處理的數據信息參考。通過TKPROF,可以發現占CTU資源最高的PID,進而找到相應的SID和SERIAL#。再通過“dbms_system.set_sql_trace_in_session”對Session進行追蹤,并通過“user_dump_dest”定義生成的trace文件,由TKPROF工具進行分析,從而定位相關SQL語句,診斷其語句執行問題。系統分析人員根據其CPU占用時間、消耗的時間等信息對相應SQL語句進行必要的調整。
4結論
Oracle數據庫是甲骨文公司的核心產品,作為一種主流的大型數據庫在各類信息系統中有著廣泛的應用,隨著用戶業務量的持續增長,數據庫的響應時間、處理能力都受到的嚴重的挑戰,為了應對數據庫性能瓶頸問題,做好相關數據庫優化處理工作則顯得十分關鍵,數據庫優化處理涉及到了數據庫運行所依賴的軟硬件環境、數據庫配置文件的優化、數據庫核心業務的SQL邏輯優化處理以及數據庫執行過程的追蹤等環節,由此可見,數據庫優化處理是綜合性工作,本文從Oracle數據庫優化必要性、相關因素以及優化措施兩個方面進行了相關內容的論述,為有效利用數據庫、做好數據庫優化處理工作提供參考。
參考文獻
[1]韋安云.Oracle數據庫的性能調整與優化方法探析[J].電腦知識與技術,2015(21):8-9.
[2]王承軍.高并發大數據在線學習系統中的關鍵技術研究[D].中國地質大學,2015.
[3]冷爽.Oracle數據庫管理的優化措施分析[J].電子制作,2015(06):63.
[4]王曉菲.航空結算系統基于oracle數據庫的性能優化[J].價值工程,2015(02):210-211.
[5]馮育棟.信息系統Oracle數據庫性能優化研究[J].計算機光盤軟件與應用,2014(24):120-121.
[6]范君君,趙黎.淺談Oracle數據庫SQL性能優化[J].信息系統工程,2014(10):86.
[7]趙新民,崔海艷.Oracle數據庫SQL語句優化要點分析[J].信息安全與技術,2014(06):65-66+69.
[8]張愛,張清輝.基于代價的Oracle優化器的性能調優案例分析[J].中國管理信息化,2013(24):78-80.
[9]鄧磊.Oracle數據庫性能調整與優化技術分析[J].計算機光盤軟件與應用,2013(17):96-97.endprint