SGA是一個英文簡稱,中文的意思是系統全局區。它是一個存儲區域,被所有用戶所共享。系統全局區內就像是一個個格子,每個格子就是一個存儲組件,用來存放為滿足每類內存分配需求而使用的內存池。例如用戶最近查詢過的數據塊就會被保存在其中的一個格子里;數據庫的結構等變化需求等也會被存儲在這些格子中。
現在就遇到一個問題,格子大小的問題。若格子太大,整個格子只裝了不到三分之一的內容,那么明顯是一種浪費,這些空間本來是可以被用作其他用途的;若格子太小,信息存放不下去了,就又會發生內存分配錯誤。
如果數據庫管理員自己來調整這些格子的大小,那么難度也是可想而知的。因為這些空間的需求量是不確定的,隨著業務的不同,其需要的容量也隨之改變。所以,數據庫管理員希望數據庫能夠對系統全局區進行動態分配,能夠讓數據庫根據實際的需要量,劃分這些格子的存儲空間。當然有個前提,就是其不超出總的容量大小。
在Oracle 10G與11G的數據庫系統中,增加并完善了這方面的功能,實現了對于系統全局區的動態分配功能。也就是說,我們數據庫管理員,只需要制定一個系統全局區的總大小,然后,里面的格子怎么分,就不需要我們關心了。Oracle數據庫會自己根據里面居住的客人數量的多少,進行分配。Oracle數據庫會擔負起在整個系統全局區內部進行優化內存分配對一個重任。數據庫有了這個改進之后,這些房間的大小就不是固定的,而是會隨著業務量的不同而實現動態的梗概。如此的話,一方面,房間的空間不會被浪費,不會一個房間很擠而其他房間很空;另一方面,也不會因為存儲信息的時候因為空間不夠而發生內存存儲錯誤。
通過這個自我調整系統全局區的功能,Oracle數據庫會智能地對數據庫服務器的內存進行合理的分配,提高內存的使用效率,提高數據庫的性能。
不過,這兩項功能,都提供了自定義的功能,如可以自己定義系統全局區的總大小以及檢查點的恢復時間等等。雖然定義起來比較簡單,但是,有個問題就是定義多大才使合理的呢?這個很難確定。因為這根據企業應用不同而有所區別,沒有什么可以參考的標準。一般情況下,數據庫管理員可能需要觀測數據庫性能達一年以上,才能夠取得一個合理的值。所以,筆者的建議是,剛開始的時候,就采取默認的設置。讓數據庫自己根據服務器的硬件配置,去取得合理的參數。在以后若有必要的時候,再根據相關的信息,去設置一個合理的值。
文章來源于領測軟件測試網 http://www.kjueaiud.com/