彭明
摘要:Oracle作為優良的數據庫管理工具已經在各個行業被廣泛使用,并為企業創造了客觀的商業價值。本文論述了如何優化Oracle性能,從而高效地管理和使用這些Oracle數據。
關鍵詞:Oracle;性能;優化
1 Oracle數據庫簡介
數據庫顧名思義就是數據倉庫,是按某種規則和方法組織起來的“數據”的“集合”。數據集合按照人的意愿進行處理,實現數據共享、減少冗余、數據集中控制、保持數據一致性和可維護性,以確保數據的安全性和可靠性等功能。數據庫管理系統Database Management System(簡寫DBMS),它是數據庫的管理工具,用戶按照工具定義設計數據庫中數據存儲規則和方案,并對數據進行增刪改查操作。常見DBMS有:MySQL、Oracle、DB2、Sql Server等。其中Oracle在數據存取性能、安全性上表現出色,廣泛應用于大中型企業的數據管理。
2 Oracle性能的概念
何為Oracle性能?Oracle性能是指Oracle事務的響應時間和并發量,并發量是單位時間內Oracle的數據吞吐量。Oracle執行大部分磁盤IO和數據處理任務,影響著關聯的應用程序的數據利用率和使用效果。隨著計算機技術和軟件應用的更新升級,Oracle設計也朝著規模化,大型化發展,數據的存取量和并發量越來越大,對Oracle的負載和性能要求更高,Oracle性能管理和調優就成了DBA(數據庫管理者)要著重考慮的事情。在壓縮軟硬件成本投入的情況下,最大化Oracle數據管理效果,減少資源消耗,確保數據庫高效運行,這是DBA優化Oracle性能的目的。
3 Oracle優化方案
影響Oracle性能的因素很多,硬件環境、自身應用程序的配置和優化工具使用、數據庫構成元素(數據文件、分區、數據表、字段等)和結構設計、SQL語句的優劣、關聯的應用程序都會影響Oracle的性能。以下是我總結的幾種優化方案。
3.1 硬件的優化
1.硬件環境的優化
硬件是Oracle的載體,Oracle安裝和使用對硬件也有基本要求,滿足基本要求,Oracle才能正常工作,更好的硬件能夠提升和發揮Oracle的性能。例如:快速穩定的網絡傳輸環境、更高效的內存、CPU處理和磁盤管理能力的服務器。
服務器可以使用磁盤陣列RAID優化Oracle性能。RAID是由多磁盤(一個陣列)組成的磁盤系統。RAID技術可以處理Oracle成倍增加了寫操作和并行處理多個讀操作,提高Oracle的讀寫性能。數據在各個陣列盤之間相互備份,保證了數據的安全性和事務日志的冗余性。
2.Oracle文件磁盤存儲方案
Oracle由數據文件、控制文件、日志文件三種文件組成。Oracle分區技術決定數據文件儲存路徑,將每個文件分散存儲,讓數據均勻分布在的磁盤中,不僅減少了磁盤I/O開銷,還提高了Oracle的安全性,利于故障恢復。另外,把活躍和不活躍的數據表分別存儲到不同的數據文件中,讓I/O資源的分配更加高效,也減少了的磁盤碎片的產生。總之,好的存儲方案有效地平衡磁盤的數據存儲量,優化了Oracle對磁盤的利用率,對I/O訪問進行分流,提高I/O 利用率,從而減輕Oracle負載。
3.2關聯Oracle的應用程序優化
應用程序的功能都是基于對數據的增刪改查的處理。比如:游戲賬號的登錄和游戲中的人物的移動,就涉及賬號表的查詢和屏幕坐標數據的創建、修改。應用程序設計者在對Oracle性能方面優化要以確保數據安全和功能完善的情況下,盡量把數據本地化為原則。
(1)不必要的數據不要在Oracle中存儲,記錄數據可以文件的形式(TXT、DOC、XLS格式文件)儲存在本地計算機中,減少了對數據庫的訪問(比如游戲角色的位置坐標)。
(2)優化應用程序的SQL命令,比如:執行多個查詢SQL,Oracle和客戶端的連接反復處于開/閉狀態,開銷Oracle內存資源、增加響應時間。要解決這個問題,可以使用SQL過程或者事務,讓連接可以反復重用。另外,過程、函數、事務的代碼中不要使用游標SQL語句,因為游標執行時,Oracle會將游標指令調入內存,降低讀寫能力。
(3)應用程序其它優化措施。如果是B/S結構的網站應用,開發者可以使用緩存Cookies技術,緩存Cookies不用頻繁的從Oracle查詢下載數據,使用本地第一次獲取的數據;如果是.Net應用程序,可以采用LINQ to SQL和數據集技術,它將Oracle中的表轉化為實例化類,提高了存取訪問速度。另外,開發者將SQL語句寫入Oracle服務器端腳本中比直接寫入程序代碼中編譯成DLL調入內存在執行速度上要快一些。
3.3 數據表的設計優化
數據表是存儲數據的最小“容器”了。基于范式設計合適的數據表,可以消除冗余,節約空間,使得數據容易維護、移植。拆分大表變為小表,讓表“瘦身”,能夠減少查詢時間,防止小腳穿大鞋,提高Oracle性能。
1.字段設計
表由字段構成列,每個字段都有自己的屬性,比如字段大小,設置合適的字段大小,對查詢表時分配內存資源有一定影響,比如,姓名列設置VARCHAR2(10)比設置成VARCHAR2(50)更加合理,分配的內存空間也更小,更加節約資源開銷。
2.表的瘦身
如果將數據表設計過大,那么會影響表的操作速度(增刪改查),數據表過大,不僅僅指它的列多,也指它的數據行過多。舉個例子,設計一個人員表,它不僅包含了基本信息(身高,祖籍,性別等),還包含了工作、學習、家庭成員情況(工作時間,工作單位,平均工資,畢業),信息量龐大,不好維護,實際使用的時候,可能只會取表的相關列,有些列使用頻率可能會十分的低,過多的列會降低其訪問速度。同時,表的數據行過多,單次查詢周期將會增加,也降低了性能。因此,將大表橫向,縱向的分割成小表,可以提高表操作速度,最大化利用Cache。
3.索引優化
索引就像書本的目錄,目錄能夠快速的定位書頁,索引也能幫助我們不用全表掃描就能快速找到表數據,提高查詢效率。創建索引是數據庫最基本的優化手段。
3.4 SQL語句優化
對數據的管理是通過運行SQL語句實現,SQL語句要本著簡潔、低耗(時間和系統)、快速的原則,那些繁冗復雜,效率低下的SQL語句會大大浪費資源,增加網絡響應時間,降低Oracle性能,因此編寫SQL語句要盡量做到:SQL查詢中不要出現子查詢或者使用join,union的多表聯合查詢;將一個大的查詢拆成多步執行的簡單查詢,盡量不要使用游標,如果使用也要及時關閉;書寫過程函數盡量不要使用循環語句等。
4 總結
Oracle性能優化有助于高效、便捷、安全的使用數據,助力企業信息化建設和商業盈利。希望本文對Oracle的管理者和應用程序開發人員有所幫助。
(作者單位:錦西石化分公司信息管理部)