熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

數據庫自我調整介紹

2022-06-13   來源: SQL語言 

   自我調整檢查點

  在以前的文章中筆者談到過Oracle數據庫中有存儲緩沖區其包括三部分內容一種叫做髒緩沖存儲區這個緩沖存儲區中存儲的是已經被修改的數據一般情況下這個數據不會馬上被寫入到數據文件中去除非空閒緩沖快用完了這個數據才會被寫入數據文件但是如此的話也會遇到一個問題若空閒緩沖區剛用完的時候其他用戶也在頻繁的對數據庫進行讀寫操作在這個繁忙的時刻再往數據庫文件中寫入更改後的數據那麼很明顯會極大的影響數據庫的性能

  所以作為數據庫管理員我們的設想是能否在I/Q操作比較空的時候就把髒緩沖中的數據寫入到數據庫中去呢?這若是靠數據庫管理員手工管理肯定不現實我們數據庫有這個自動判斷的功能甲骨文好像聽到了我們眾多數據庫管理員的呼聲G版本的數據庫中新增了這個功能並在G版本中進行了完善這就是自我調整檢查點的自我調整功能

  檢查點是將內存中修改的數據與數據庫中的數據文件同步的手段Oracle數據庫定期將檢查點之間修改的數據寫入數據文件這種做法的要求之一是需要服務器有足夠的可用內存以提高為即將進行的操作尋找空閒內存的執行性能

  所以這個檢查點的設置跟很多參數有關如服務器的內存等等雖然在以前的版本中數據庫管理員可以通過設置相關的初始化參數來指定預期的崩潰恢復時間但是實際上由於這個設置復雜影響因素眾多所以很少有數據庫管理員會去調整這個參數而都是采用其默認的設置

  筆者在使用Oracle G數據庫中印象最深的是數據庫可以自我調整檢查點雖然在G中也已經提出了這個功能但是用的總是不怎麼順心G中作了一定的改善從而使得這個新功能得到了大家的認同使用數據庫的自動檢查點調整數據庫就會自動判斷數據庫的繁忙程度具體的說是判斷I/Q 操作的繁忙程度數據庫會自動在其比較空閒的時候把髒緩沖期中的內容寫入到數據文件中從而降低對數據庫吞吐量所產生的影響提高數據庫的操作性能

  其實這個檢查點的自我調整功能就好像是一個交通警察當道路繁忙的時候下班高峰期時一些打掃衛生的清潔車就不能進入車道;只有到道路比較空閒的時候清潔車才能進入車道打掃衛生從而把清潔車對於車道的正常運行的影響降低到最低

  當然這個改善可能用戶一下子還察覺不出來但是我們通過數據庫日志進行前後的對比就會發現兩者的差異是很大的利用了數據庫檢查點自我調整功能後數據庫的查詢性能特別是查詢大量數據的性能得到了比較顯著的改善

  不過話說回來數據庫的自我調整功能雖然是一個不錯的交通警察但是當車真的很多的時候最好的交通警察也是無能為力此時就需要對硬件上的改善如增加服務器的內存等等畢竟像數據檢查點等自我調整功能只能夠改善硬件的利用能力而不能從本質上提升硬件的容量

   自我調整系統全局區

  SGA是一個英文簡稱中文的意思是系統全局區它是一個存儲區域被所有用戶所共享系統全局區內就像是一個個格子每個格子就是一個存儲組件用來存放為滿足每類內存分配需求而使用的內存池例如用戶最近查詢過的數據塊就會被保存在其中的一個格子裡;數據庫的結構等變化需求等也會被存儲在這些格子中

  現在就遇到一個問題格子大小的問題若格子太大整個格子只裝了不到三分之一的內容那麼明顯是一種浪費這些空間本來是可以被用作其他用途的;若格子太小信息存放不下去了就又會發生內存分配錯誤

  如果數據庫管理員自己來調整這些格子的大小那麼難度也是可想而知的因為這些空間的需求量是不確定的隨著業務的不同其需要的容量也隨之改變所以數據庫管理員希望數據庫能夠對系統全局區進行動態分配能夠讓數據庫根據實際的需要量劃分這些格子的存儲空間當然有個前提就是其不超出總的容量大小

  在Oracle G與G的數據庫系統中增加並完善了這方面的功能實現了對於系統全局區的動態分配功能也就是說我們數據庫管理員只需要制定一個系統全局區的總大小然後裡面的格子怎麼分就不需要我們關心了Oracle數據庫會自己根據裡面居住的客人數量的多少進行分配Oracle數據庫會擔負起在整個系統全局區內部進行優化內存分配對一個重任數據庫有了這個改進之後這些房間的大小就不是固定的而是會隨著業務量的不同而實現動態的梗概如此的話一方面房間的空間不會被浪費不會一個房間很擠而其他房間很空;另一方面也不會因為存儲信息的時候因為空間不夠而發生內存存儲錯誤

  通過這個自我調整系統全局區的功能Oracle數據庫會智能地對數據庫服務器的內存進行合理的分配提高內存的使用效率提高數據庫的性能

  不過這兩項功能都提供了自定義的功能如可以自己定義系統全局區的總大小以及檢查點的恢復時間等等雖然定義起來比較簡單但是有個問題就是定義多大才使合理的呢?這個很難確定因為這根據企業應用不同而有所區別沒有什麼可以參考的標准一般情況下數據庫管理員可能需要觀測數據庫性能達一年以上才能夠取得一個合理的值所以筆者的建議是剛開始的時候就采取默認的設置讓數據庫自己根據服務器的硬件配置去取得合理的參數在以後若有必要的時候再根據相關的信息去設置一個合理的值


From:http://tw.wingwit.com/Article/program/SQL/201311/16383.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.