oracle 優(yōu)化的一點體會
更新時間:2009年10月01日 02:06:42 作者:
oracle 優(yōu)化的一點體會大家可以參考下,提升運行效率。
關(guān)于oracle 優(yōu)化的內(nèi)容很多,概念龐雜,不過可以總結(jié)出一個大綱性的東西作為需要考慮的方向,然后再逐步細(xì)化。oracle優(yōu)化按重要性需要考慮設(shè)計、開發(fā)、調(diào)整幾個方面。
首先是設(shè)計,這是最重要的部分,借用TOM的話:“性能是設(shè)計出來的,不是調(diào)整出來的”。設(shè)計分為邏輯設(shè)計和物理設(shè)計,邏輯設(shè)計一般要遵循3NF,同時也要根據(jù)應(yīng)用的需要引入逆規(guī)范化的設(shè)計,應(yīng)為NF設(shè)計雖然消除了數(shù)據(jù)冗余,但隨著規(guī)范化越高需要連接的表可能越多,同樣對性能有影響,所以需要平衡考慮,至于何時要3NF,何時要逆規(guī)范化,要是具體情況而定。
物理設(shè)計一個是存儲,比如物理文件、聯(lián)機日志文件、歸檔日志文件的磁盤布局,各種RAID的使用等(在這方面piner的分析比較全面細(xì)致),第二是要根據(jù)應(yīng)用的特性,選擇文件組織方式,靈活運用oracle的各種表和索引類型,例如交叉表可以考慮使用IOT、讀密集型并且經(jīng)常關(guān)聯(lián)的字段使用cluster,還有全局臨時表、外部表等等。除了普通的B樹索引外,在低基數(shù)情況下考慮使用位圖索引,使用函數(shù)時引入基于函數(shù)的索引等。
其次是開發(fā)階段,比如老生常談的使用綁定變量、外鍵加索引、使用bulk collect、分析函數(shù)、直接路徑加載,在OLAP應(yīng)用中使用partition、MV、位圖索引、并行化操作等等。沒種技術(shù)要深入研究都有很多內(nèi)容。
最后才是調(diào)整,這是在出現(xiàn)性能問題時采用的手段。這已經(jīng)形成了一個完整的方法論。
1)設(shè)立合理的性能優(yōu)化目標(biāo)。
2)測量并記錄當(dāng)前性能(STATSPACK、AWR等)。
3)確定當(dāng)前Oracle性能瓶頸(從Oracle 等待接口v$system_event、v$session_event和v$session_wait中獲得等待事件,進(jìn)而找出影響性能的對象和sql語句
)。
4)把等待事件記入跟蹤文件(autotrace、10046事件等)。
5)確定當(dāng)前的OS瓶頸(sar、iostat、cpustat、mpstat、netstat、top、osview等)。
6)優(yōu)化所需的成分(應(yīng)用程序、數(shù)據(jù)庫、I/O、爭用、OS等)。
7)跟蹤并實施更改控制過程。
8)測量并記錄當(dāng)前性能
9)重復(fù)步驟3到7,直到滿足優(yōu)化目標(biāo)
以上是本人對Oracle優(yōu)化的一些粗線條的體會,可以指出優(yōu)化需要考慮的大的方向,而相關(guān)的技術(shù)細(xì)節(jié)非常多,每項都要仔細(xì)研究,正如piner總結(jié)的:多思考、多實踐、多總結(jié)。
再記點題外話,公司節(jié)后要對技術(shù)部作人員調(diào)整,說白了就是裁人,這次除了要個網(wǎng)管保證能上網(wǎng)就不留技術(shù)的人了,假期準(zhǔn)備簡歷,節(jié)后找工作。
首先是設(shè)計,這是最重要的部分,借用TOM的話:“性能是設(shè)計出來的,不是調(diào)整出來的”。設(shè)計分為邏輯設(shè)計和物理設(shè)計,邏輯設(shè)計一般要遵循3NF,同時也要根據(jù)應(yīng)用的需要引入逆規(guī)范化的設(shè)計,應(yīng)為NF設(shè)計雖然消除了數(shù)據(jù)冗余,但隨著規(guī)范化越高需要連接的表可能越多,同樣對性能有影響,所以需要平衡考慮,至于何時要3NF,何時要逆規(guī)范化,要是具體情況而定。
物理設(shè)計一個是存儲,比如物理文件、聯(lián)機日志文件、歸檔日志文件的磁盤布局,各種RAID的使用等(在這方面piner的分析比較全面細(xì)致),第二是要根據(jù)應(yīng)用的特性,選擇文件組織方式,靈活運用oracle的各種表和索引類型,例如交叉表可以考慮使用IOT、讀密集型并且經(jīng)常關(guān)聯(lián)的字段使用cluster,還有全局臨時表、外部表等等。除了普通的B樹索引外,在低基數(shù)情況下考慮使用位圖索引,使用函數(shù)時引入基于函數(shù)的索引等。
其次是開發(fā)階段,比如老生常談的使用綁定變量、外鍵加索引、使用bulk collect、分析函數(shù)、直接路徑加載,在OLAP應(yīng)用中使用partition、MV、位圖索引、并行化操作等等。沒種技術(shù)要深入研究都有很多內(nèi)容。
最后才是調(diào)整,這是在出現(xiàn)性能問題時采用的手段。這已經(jīng)形成了一個完整的方法論。
1)設(shè)立合理的性能優(yōu)化目標(biāo)。
2)測量并記錄當(dāng)前性能(STATSPACK、AWR等)。
3)確定當(dāng)前Oracle性能瓶頸(從Oracle 等待接口v$system_event、v$session_event和v$session_wait中獲得等待事件,進(jìn)而找出影響性能的對象和sql語句
)。
4)把等待事件記入跟蹤文件(autotrace、10046事件等)。
5)確定當(dāng)前的OS瓶頸(sar、iostat、cpustat、mpstat、netstat、top、osview等)。
6)優(yōu)化所需的成分(應(yīng)用程序、數(shù)據(jù)庫、I/O、爭用、OS等)。
7)跟蹤并實施更改控制過程。
8)測量并記錄當(dāng)前性能
9)重復(fù)步驟3到7,直到滿足優(yōu)化目標(biāo)
以上是本人對Oracle優(yōu)化的一些粗線條的體會,可以指出優(yōu)化需要考慮的大的方向,而相關(guān)的技術(shù)細(xì)節(jié)非常多,每項都要仔細(xì)研究,正如piner總結(jié)的:多思考、多實踐、多總結(jié)。
再記點題外話,公司節(jié)后要對技術(shù)部作人員調(diào)整,說白了就是裁人,這次除了要個網(wǎng)管保證能上網(wǎng)就不留技術(shù)的人了,假期準(zhǔn)備簡歷,節(jié)后找工作。
相關(guān)文章
Navicat Premium中Oracle創(chuàng)建主鍵自增的方法
這篇文章主要介紹了Navicat Premium中Oracle創(chuàng)建主鍵自增的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12oracle正則表達(dá)式多項匹配時相似項有優(yōu)先級詳解
這篇文章主要給大家介紹了關(guān)于oracle正則表達(dá)式多項匹配時相似項有優(yōu)先級的相關(guān)資料,Oracle中使用正則表達(dá)式需先使用REGEXP_LIKE函數(shù)來匹配字符串,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06oracle中左填充(lpad)和右填充(rpad)的介紹與用法
這篇文章主要跟大家介紹了關(guān)于oracle中左填充(lpad)和右填充(rpad)的相關(guān)資料,通過填充我們可以固定字段的長度,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-08-08Oracle創(chuàng)建主鍵自增表(sql語句實現(xiàn))及觸發(fā)器應(yīng)用
主鍵自增在插入數(shù)據(jù)的時候是很實用的,可以獲取并操作返回的插入記錄的ID,接下來介紹Oracle如何創(chuàng)建主鍵自增表,感興趣的你可以了解下,就當(dāng)是鞏固知識,希望此文對你有所幫助2013-01-01Oracle管道函數(shù)pipelined?function的用法小結(jié)
這篇文章主要介紹了Oracle管道函數(shù)pipelined?function的用法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07