資料庫效能優化解決方案

2021-06-01 00:28:10 字數 4065 閱讀 2574

資料庫能優化方案是對使用者提出的k3系統在使用過程中遇到的效能問題,從sql server調整,硬體調整這兩方面提出了效能優化解決方案。

1 sql server調整

當使用者使用k3系統一段時間以後,發現系統的響應時間越來越長。這種情形往往是由於賬套資料庫缺乏維護引起的。缺乏維護的資料庫會存在過多地碎片、過期的統計、隱含著可能的錯誤查詢結果的資料庫的邏輯和物理的不一致性,這些都會直接影響系統的效能。

這裡介紹解決上述賬套資料庫效能問題常用的方法。

1.1 使用dbcc語句發現和解決上述問題。

dbcc: 資料庫一致性檢查器。

開啟sql查詢分析器,執行如下語句。

◆ dbcc showcontig 顯示指定表的資料和索引的有關資料碎片的資訊dbcc showcontig(表名[,索引名])

在有大的改動的表,引入資料的表,或者引起低效查詢的表上使用該語句。

例:dbcc showcontig(』t_item』)

◆ dbcc dbreindex重建指定資料庫中表的乙個或多個索引。

例1:重建某個索引

dbcc dbreindex ('t_item', uk_item2, 80)

例2:重建所有索引

dbcc dbreindex ('t_item',』』,80)

◆ dbcc show_statistics顯示指定表上的指定目標(例如乙個索引名稱))的當前分布統計資訊。這些統計資訊是被sql server查詢優化器使用的dbcc show_statistics(表名,目標)

例:dbcc show_statistics('t_item','pk_item')

◆ sp_updatestats & update statistics 更新統計資訊; sp_updatestats對當前資料庫中所有使用者定義的表執行 update statistics.

使用update statistics語句的時機:在乙個空表上建立乙個索引,然後在以後應用它。執行truncate table語句,然後在以後重新應用該錶。

通過使用fullscan或sample選項請求明細的索引統計資訊。

例1. update statistics t_item

例2. update statistics t_item(pk_item)

例3. use ais20011203150410

exec sp_updatestats

◆ dbcc checktable檢查指定表或索引檢視的資料、索引及 text、ntext 和 image 頁的完整性。如果你相信乙個指定的表可能被破壞了,這條命令非常有用。

◆ dbcc checkdb檢查指定資料庫中的所有物件的分配和結構完整性。這條命令發現並修復資料庫位址分配和表內部的全部錯誤。實際上,checkdb驗證資料庫內部一切事物的完整性,但是,dbcc checkdb是乙個耗費cpu和磁碟資源的操作,每個需要檢查的資料都必須首先從磁碟中讀出到記憶體中。

而且,dbcc checkdb 使用tempdb進行排序 。要獲得較高的dbcc效能,推薦在下面的情況下執行dbcc:

● 在系統使用率較低的情況下執行checkdb;

● 確信當前沒有執行其他磁碟i/o操作,如磁碟備份操作;

● 將tempdb放在另乙個磁碟系統上,或者放在乙個快速磁碟子系統上;

● 為tempdb提供足夠的空間,執行dbcc帶上引數estimate only(顯示執行dbcc checkdb操作所需tempdb空間的數量),估計tempdb需要多少磁碟空間;

● 避免執行消耗大量cpu時間的查詢和批處理;

● 在dbcc命令執行時,減少事物活動;

● 使用no_infomsgs選項(壓縮使用空間使用的資訊和報告)減少處理和tempdb使用率。

例:dbcc checkdb ('ais20011203150410') with no_infomsgs,estimateonly

◆ dbcc sqlperf 提供有關所有資料庫中的事務日誌空間使用情況的統計資訊。日誌檔案的閒餘空間的減少,會降低系統的效能。系統會在備份時日誌截斷日誌檔案,所以要求使用者要制定乙份良好的備份方案。

例:dbcc sqlperf ( logspace )

1.2 使用資料庫維護計畫

使用資料庫維護計畫器是一種標準且方便的可對多個賬套資料庫同時設定維護任務維護模式。下面介紹其建立方法:

本方案所介紹的資料庫維護計畫側重於資料庫的優化,即效能的提高。

1) 開啟enterprise manager,展開伺服器,展開管理,然後單擊資料庫維護計畫。從操作(action)中選擇新建維護計畫,可以看到圖4.1所示的歡迎螢幕,單擊下一步按鈕。

圖1歡迎螢幕

2) 選擇資料庫,選擇k3賬套所在的資料庫(可選乙個或多個)。單擊下一步按鈕。

圖2 選擇資料庫

3) 更新資料庫優化資訊。選擇重新組織資料和索引頁,選擇使用原有可用空間重新組織頁面。選擇當增長超過50mb時,從資料庫檔案中刪除未使用空間,收縮後保留的可用空間為10%的資料空間。

單擊下一步按鈕。

圖3更新資料庫優化資訊

4) 檢查資料庫完整性。選擇檢查資料庫完整性,包含索引以及嘗試修復所有小問題。單擊下一步。

圖4 檢查資料庫完整性

5) 指定資料庫備份計畫,備份在優化方案中暫不考慮,跳過,單擊下一步

圖5資料庫備份計畫

6) 指定事務日誌備份計畫在優化方案中暫不考慮,跳過,單擊下一步。

圖6指定事物備份計畫

7) 生成報表。選擇將報表寫入目錄中的文字檔案,選擇刪除早於4周的報表檔案。或者選擇將電子郵件報表傳送到操作員,然後花時間閱讀這個報表,看看資料庫中是否有任何需要注意的問題。

單擊下一步。

圖7生成報表

8) 維護計畫歷史記錄。

sql server每次執行時保持維護計畫的歷史。可以瀏覽這個歷史,看看操作中何時遇到故障,然後確定故障原因。如果只有單台機器,則要在本地伺服器存放歷史紀錄,但如果網路中又多台機器,則要將歷史紀錄存放在**伺服器中,以便從各台機器上方便的訪問。

下面選擇預設在本地存放1000行歷史紀錄。單擊下一步。

圖 8 維護歷史紀錄

9) 完成資料庫維護計畫嚮導。用於命名和檢查具體工作,在計畫名中輸入:k3賬套資料庫維護計畫。單擊完成按鈕生成計畫。

圖9 完成資料庫維護計畫嚮導

1.3 發現死鎖和消除死鎖

死鎖形成的原因是不同的,有的死鎖系統可以自動地偵測和消除而另外一些則需要管理員調整請求

死鎖發生在兩個或多個程序同時等待被其中乙個程序保留著的鎖。該程序將不會釋放它保留的鎖直到它獲得被其它程序保留的資源,反過來也一樣。當乙個死鎖被被確認以後,sql server通過自動選擇可以立即打斷死鎖的執行緒來結束死鎖。

許多阻塞的問題發生在由於乙個程序保留鎖過長時間,引起一系列被阻塞的程序等待其它程序釋放鎖。sql server不能識別阻塞鎖並自動地解決它們,所以必須監控阻塞鎖的存在並手工消除它。

在乙個應用中建立乙個鎖的超時設定是乙個防止阻塞鎖的方法。這允許應用監控阻塞鎖並回滾程序而不是不確定地等待或阻塞語句的重提交。

下面,介紹手工消除死鎖的方法:

1) 系統長時間沒有響應,可以在sql查詢分析器中執行系統儲存過程sp_lock 和sp_who,如圖所示,spid 57正在等待資源。

spid:系統程序id

執行命令:sp_who 57 可以得到關聯該程序和鎖的使用者的登入名稱,主機名稱和狀態等資訊。

圖1. 執行sp_lock顯示的鎖資訊

2) 轉到sql server enterprise manager,展開管理,展開當前活動,展開鎖/進id,如圖所示,spid57被spid56阻塞。

圖2. 顯示鎖的阻塞情況

3) 雙擊spid56,然後單擊取消程序(kill process)。

4) spid57阻塞解除。

2 硬體調整

硬體調整,是為k3系統的正常執行要求的工作量提供足夠的硬體資源的行動。要調整系統的硬體,就要決定可以為k3系統分配那些資源以改進其效能,這些資源包括附加的記憶體、cpu、i/o資源或所有這些資源的組合。調整系統效能的工作主要涉及決定應該增加哪種資源,以及增加多少資源。

硬體調整是非常重要的,因為許多典型的效能問題是由不充足的或配置失當的硬體元件導致的。i/o子系統是乙個資料庫調整的關鍵性部分。通過提供足夠的cpu、記憶體與i/o資源。

可以避免許多效能問題。

mysql效能優化解決方案

renhao 2011 11 30 red hat enterprise linux server release 5.4 tikanga elf 32 bit lsb executable,intel 80386,version 1 sysv for gnu linux 2.6.9,dynamic...

優化Oracle資料庫效能

4.調整伺服器記憶體分配記憶體分配是在資訊系統執行過程中優化配置的。資料庫管理員根據資料庫的執行狀況不僅可以調整資料庫系統全域性區 sga區 的資料緩衝區 日誌緩衝區和共享池的大小,而且還可以調整程式全域性區 pga區 的大小。5.調整硬碟i o 這一步是在資訊系統開發之前完成的。資料庫管理員可以將...

資料庫雙機熱備解決方案

雙機資料庫熱備系統安全 解決方案 計算機資訊化技術的全面發展使得醫院的正常運營越來越依賴於his 系統,並隨著醫院資訊化的不斷深入,his系統所產生的大量業務資料已成為一項蘊涵醫院命脈的寶貴資源!而諸如資料丟失 盤櫃損壞 陣列資訊丟失 病毒侵害 人為破壞等危機,卻時時威脅著醫院資料的安全。針對上述隱...