磁碟排序對Oracle資料庫效能的影響

2021-04-27 09:40:23 字數 1761 閱讀 9747

磁碟排序對oracle資料庫效能的影響

當建立同oracle

會話時,會在伺服器

記憶體中劃分出乙個專門用來排序的區域,從而為會話提供排序空間。但是,這個排序空間畢竟有限,若記錄數量超過這個排序空間的話,就需要進行磁碟排序。但是,我們都知道,磁碟排序的執行速度要比記憶體排序的執行速度慢1400倍。而且,磁碟排序會消耗臨時表空間的資源,並且可能影響到正在進行的其他sql排序,因為oracle

必須為臨時表空間中的資料塊分配緩衝池。而且,過多的磁碟排序會導致空閒緩衝等待,以及將執行其他任務的資料塊從緩衝池中分頁出去。對於資料庫管理員來說,在記憶體中進行排序總是比磁碟排序更受歡迎。所以說,磁碟排序是影響oracle資料庫效能的罪魁禍首。

在資料庫優化的時候,我們應該想法設法降低資料庫的磁碟排序。為此,筆者有如下建議。

一、合理設定sort_area_size引數

雖然說oracle10g以後的資料庫會自動對記憶體進行管理。但是,在一些效能要求比較高或者排序頻率比較高的資料庫中,仍然有必要對一些影響記憶體分配的引數進行調整。其中,最重要的乙個引數就是sort_area_size。

oracle資料庫會為所有的鏈結oracle會話分配sort_area_size這個引數。所以,對於擁有大量使用者的資料庫來說,如果增加這個引數的值,會讓磁碟排序的機率明顯降低,不過資料庫也要為此付出這個代價,很容易導致記憶體過載。但是,如果這個引數的值設定的過低的話,又會導致過多的磁碟排序。

所以,這個引數並不是越大越好。因為這個引數如果設定的過大的話,其帶來的效能收益反而會降低。因為為了提高有限幾個查詢的速度,可能會浪費大量的記憶體。這無疑是我們資料庫管理員不希望看到的。

在實際工作中,我們往往需要在兩者之間進行乙個均衡。設定乙個合理的引數,盡量讓資料庫減少磁碟排序的機率,同時也不能使得伺服器

記憶體過載。

為此筆者有乙個建議。資料庫管理員應該每隔一段時間增加這個引數的值,並使用statspack工具定時監控記憶體排序與磁碟排序的資料。在起初進行調整的時候最好每個小時查詢一次。通過這些資料,我們就可以得到乙個合理的引數值,在兩這之間取得乙個均衡。

前期調整完成後,在後期仍然需要進行監控。因為後期隨著企業應用的改變,這個引數仍然需要根據實際情況進行調整,以提高資料庫的效能。

二、儘量減少不必要的排序

在某些情況下,儘管資料庫管理員沒有直接通過order by等語句對資料庫記錄進行排序,可是oracle資料庫伺服器仍然會對查詢結果進行排序。因為這些語句需要起作用,必須要先對資料進行排序。所以,他們往往帶有隱性的排序功能。

我們在資料庫維護或者前台應用程式設計的時候,要盡量的減少這種不必要的排序。如distinct關鍵字,它的作用就是取消重複的記錄。但是,要實現這個目的的話,則資料庫必須要先對記錄進行排序,然後才能夠去除重複的記錄內容。故在設計的時候,盡量要避免使用distinct關鍵字。其實,筆者在工作中,經常會碰到這種情況,某些記錄其實不存在重覆記錄,但是程式開發人員為了保障資料的準確性,就在sql語句中加入了distinct關鍵字,從而造成了不必要的排序。

另外,在其他一些情況下,也會導致不必要的排序。如排序合併連線,也會導致不必要的排序。故無論何時,只要使用了排序合併連線,就會執行排序已連線關鍵值。故在資料庫與應用程式設計的時候,要盡量避免排序合併連線。其實,在許多情況下,巢狀迴圈連線反而使更好的選擇。因為這個巢狀迴圈連線,它更加有效而且不會導致不必要的排序以及不比要的全表掃瞄。

其次,有時候缺失索引也會導致一些並不要的排序。

故資料庫管理員在平時的工作中,要盡量的減少這些不必要的排序,以讓寶貴的記憶體資源交給更重要的任務來適用。

磁碟排序影響Oracle資料庫效能

當建立同oracle會話時,會在伺服器 記憶體中劃分出乙個專門用來排序的區域,從而為會話提供排序空間。但是,這個排序空間畢竟有限,若記錄數量超過這個排序空間的話,就需要進行磁碟排序。但是,我們都知道,磁碟排序的執行速度要比記憶體排序的執行速度慢1400倍。而且,磁碟排序會消耗臨時表空間的資源,並且可...

Oracle資料庫 資料庫安全性管理

一 涉及內容 1.驗證系統許可權管理。2.驗證角色管理。3.驗證概要檔案管理。二 具體操作 一 1.根據以下要求進行系統許可權的授予與 操作。1 建立使用者user1,並為它授予create table create view 的系統許可權以及connect 的系統角色。2 以user1使用者的身份...

oracle資料庫中文排序

oracle資料庫中文排序 oracle資料庫中文拼音排序問題,nls sort設定 zz oracle9i之前,中文是按照二進位制編碼進行排序的。在oracle9i中新增了按照拼音 部首 筆畫排序功能。1 設定nls sort引數值 schinese radical m 按照部首 第一順序 筆劃 ...