作為數據庫管理員,您可能對接到大量關于在線性能低下的電話感到沮喪。如果系統反應遲鈍或滯后,提高數據庫性能的最佳方法是進行優化和調整活動。性能調整可以幫助您識別瓶頸并確保您的基礎設施能夠管理增加的負載。
如果您需要提高數據庫性能,您可以采取多種措施來預防和糾正可能出現的問題。以下調優技巧可幫助您優化數據庫性能并維護全面運行的環境。本指南包括MySQL、SQL Server 和 Oracle 的性能改進數據庫技巧。
提高數據庫性能的最有效方法是實施正確的數據庫性能分析和監控工具。SolarWinds? Database Performance Analyzer (DPA)和Database Performance Monitor (DPM)可以幫助您提高 MySQL 性能、Oracle 數據庫性能和SQL Server 性能。這些工具用途廣泛、先進且用戶友好。
- 如何提高數據庫性能
- 如何使用 DPA 和 DPM 提高數據庫性能
- 開始使用性能改進數據庫技巧
如何提高數據庫性能
1. 實施基線
維護已建立的性能基線是有效調整的一個關鍵方面,因為它為您提供了問題發生時的參考點。基線可幫助您快速輕松地確定高峰使用期,從而使您能夠設置性能目標并準確了解系統功能。始終如一地衡量現有性能將提供您的數據庫應該如何執行的準確預期。這在調整將來可能出現的瓶頸時很有用。
2. 使用自動工作負載存儲庫 (AWR) 工具
如果您希望提高 Oracle 數據庫的性能,請確保您使用自動負載存儲庫 (AWR) 功能作為 Oracle 監控工具。AWR 收集、處理和維護性能統計數據,讓您每天深入了解數據庫的健康狀況。這使您可以使用 Oracle 提供的自動數據庫診斷監視器 (ADDM) 獲得對 AWR 統計數據的可操作見解。通過結合使用 AWR 和 ADDM,您可以顯著提高 Oracle 數據庫性能,增強您的調優能力,并從長遠來看節省時間和金錢。
3. 創建最優索引
如果操作得當,索引可以幫助您優化查詢執行時間并提高數據庫性能。索引實現了一種數據結構,可幫助您保持井井有條并使查找數據更加容易。索引可加快數據檢索過程,提高效率并節省您的時間和精力。
4.進行SQL調優
SQL 被廣泛認為是一種消息語言,因為發送查詢時會返回數據。但是,客戶端解決方案通常會創建低效的 SQL 語句,這會對數據庫的性能產生負面影響。在進行性能調整時,請仔細考慮消耗大量系統資源的 SQL。如果您正在嘗試提高 Oracle 數據庫性能,您可以利用 Oracle SQL 工具,如查詢優化器。通過關注您的 SQL 處理引擎,您可以增強性能調整,確保您的 SQL 正常工作。
如果您希望提高 SQL Server 性能或提高 MySQL 性能,那么利用查詢優化器仍然很有用。在大多數情況下,性能問題是由編寫不當的 SQL 查詢引起的。當您嘗試優化這些查詢時,您會遇到一些障礙。這可能包括在使用 IN 或 EXISTS 之間進行選擇,以及決定是編寫連接查詢還是子查詢。查詢優化器是具有成本效益的替代咨詢服務,可以顯著加快 SQL 查詢速度。許多查詢優化器甚至會解釋他們的建議,幫助您提高查詢優化技能。
5. 檢查你的統計數據
在對 SQL Server、MySQL 或 Oracle 進行性能調優時,定期檢查統計信息至關重要。您應該始終能夠訪問數據庫、操作系統和應用程序指標的完整匯編,因為性能調整遠不止是糾正性能問題。性能調優是一個重要的維護組件,應該在應用程序的整個生命周期中執行。為實現這一目標,您應該不斷檢查您的統計數據并改進收集和展示它們的過程,以隨著公司的變化和發展提高效率。
性能問題的癥狀通常可以在數據中識別出來,這就是為什么不要忽視統計數據的根本原因——它們在您的性能調優效率中起著關鍵作用。
6.優化CPU利用率
如果您的數據庫的診斷功能無法解決特定問題,您可能需要進行手動性能調整過程。在調查此類問題時,請確保您的 CPU 得到正確利用。首先檢查用戶空間中的 CPU 使用率。這將驗證當前是否有任何非數據庫任務正在消耗 CPU,這將限制共享 CPU 資源的數量。一旦 CPU 使用率最終確定,糾正性能問題就會變得容易得多。這也有助于澄清您的決策。
7.更新你的數據庫版本
無論您是想提高 MySQL、Oracle 還是 SQL Server 數據庫的性能,保持最新都是至關重要的。一個查詢在舊版本中可能比在新版本中執行得更好,但作為一般規則,新版本往往會執行得更好。因此,最新的系統可能會體驗到更穩定的性能。
8.考慮升級CPU
正如本指南已經提到的,您的 CPU 越好,您的數據庫性能就會越快、越高效。出于這個原因,如果您的數據庫沒有正常運行,您應該考慮升級到更高級別的 CPU 單元。如果您的 CPU 更強大,則在處理多個請求和應用程序時它會承受更少的壓力。此外,在評估您的 CPU 性能時,您必須跟蹤所有性能方面。這應該包括 CPU 就緒時間,它顯示您的系統嘗試使用 CPU 但由于 CPU 資源被其他方式占用而無法使用的時間。
9.分配更多內存
與 CPU 不足一樣,內存不足也會影響數據庫的效率。如果沒有足夠的可用內存,數據庫可能無法執行要求它執行的操作,從而導致數據庫性能下降。為數據庫提供更多可用內存將提高性能和整體系統效率。
要確定是否需要分配更多內存,請查看系統有多少頁面錯誤。如果故障數量很高(即數千),則表明您的主機可用內存空間不足。因此,在嘗試提高數據庫性能時,您應該考慮總共有多少內存以及頁面錯誤的數量。此過程將使您深入了解分配額外的內存是否會提高效率。
10.考慮碎片整理
如果您的數據庫運行緩慢,數據碎片整理可能是一個有效的途徑。當大量記錄寫入數據庫并隨著時間流逝,這些記錄可能會在內部數據文件和磁盤本身上變得碎片化。磁盤碎片整理允許將相關數據組合在一起,從而加速 I/O 相關操作。這對數據庫性能和查詢性能有直接影響。確保在運行數據庫時有足夠的磁盤空間也很重要。如果您想顯著提高數據庫性能,您應該將磁盤碎片整理與確保有足夠的磁盤空間可用結合起來。
11.使用正確的磁盤類型
僅從一個查詢中檢索結果可能需要從磁盤進行數百萬次 I/O 操作。所需的操作量直接取決于查詢需要訪問以進行處理的數據量以及從查詢返回的數據量。因此,服務器中的磁盤類型會對查詢性能產生顯著影響。使用 SSD 磁盤可以提高查詢性能和數據庫性能。
12. 查看訪問權限
一旦您確定您的數據庫硬件是健康的,您應該檢查哪些應用程序正在訪問您的數據庫。如果您的某個服務或應用程序性能不佳,請務必不要假設是哪個應用程序導致了性能問題。多種因素可能導致或影響較差的數據庫性能。整個數據庫可能被感染,或者單個客戶端可能性能不佳。
如果您的所有數據庫客戶端都遭受性能不佳的困擾,您可能需要確認您的主機是健康的。在這種情況下,您的硬件可能難以應付負載。如果單個服務的響應時間很短,請深入了解該服務的指標以確定可能導致問題的原因。
13. 了解服務實例的負載和響應時間
如果單個服務的數據庫性能不佳,請仔細查看該服務如何與數據庫通信。您應該調查以下內容:
- 執行了哪些查詢?
- 查詢返回多少行?
- 查詢執行的頻率(每個請求)?
- 如果您正在運行單個服務的多個實例,是所有實例都受到影響還是只有一個實例受到影響?
- 是否有任何理由說明每個請求應該多次執行單個查詢?
請記住,在數據庫級別出現的問題可能根源于其他地方,問題的根源可能與數據庫的訪問方式有關。一旦您考慮了每個請求調用查詢的頻率,您可能會發現可以通過增強服務的數據庫緩存來減少數據庫查詢的數量。如果您找到一個很好的理由讓單個查詢在每個請求中執行多次,那么應用智能緩存策略可能是有利的。在某些情況下,這些策略可以顯著提高性能。
14. 不要忽視網絡
虛擬化基礎架構的物理限制很容易被忽視,但它們在性能方面發揮著重要作用。不幸的是,電纜、路由器和其他硬件可能會出現故障。如果在幾個月沒有任何問題的情況下突然出現問題,那么您的基礎設施可能遇到了物理問題。要確認這一點,您應該檢查您的路由器、電纜和網絡接口。您應該在出現問題的第一個跡象時檢查這些組件,這樣您就有最大的機會在它影響您的業務之前修復它。
通常,壓力過大或過載的進程會因為資源耗盡而丟棄數據包。如果您的網絡問題不是由硬件問題引起的,則進程級別的可見性可能是識別故障組件的有用方法。
如何使用 DPA 和 DPM 提高數據庫性能
本文中列出的大部分技巧可用于提高 MySQL 性能、Oracle 數據庫性能和 SQL Server 性能。正確的專業軟件可以幫助您持續管理這些實踐的實施,從而提高數據庫性能,而不會讓您負擔過重。全面的專業工具,如 SolarWinds DPA 和 DPM,可監控關鍵性能指標并讓您訪問一系列診斷功能。使用正確的數據庫監控解決方案,您可以深入了解您的數據庫并可以利用優化實用程序來提高性能。
SolarWinds 數據庫性能分析器 (DPA)
SolarWinds DPA 是一個跨平臺的數據庫性能調整和優化工具,支持PostgreSQL、MySQL、Amazon Aurora、IBM DB2、SAP ASE、MariaDB、Oracle、Microsoft SQL Server 和 Azure SQL 數據庫。DPA 使用響應時間分析方法來調整 SQL 和查詢性能,使您能夠提供顯著的結果。響應時間分析,也稱為等待時間分析,分析完成所需操作所花費的實際時間,而不是根據服務器健康狀況進行估計。
該數據庫管理軟件有助于使資源配置與數據庫性能保持一致,使您能夠更加規范地推薦硬件。DPA 具有SQL 查詢分析器,可用于識別資源配置如何影響數據庫響應時間。這些功能還使開發人員能夠以獨特的視角了解VMware 基礎架構及其對數據庫性能的影響。
另一個有用的 DPA 功能是歷史存儲庫,它突出顯示了很容易進行SQL 調優的趨勢和異常。DPA 使用歷史數據來幫助您識別當前改進的機會,提供從五秒前到五年前的廣泛數據。這種洞察力可幫助您快速解決性能問題。
DPA 提供一系列令人印象深刻的高級功能,包括由機器學習提供支持的異常檢測。它提供實時洞察力、索引和查詢優化顧問的專家建議,以及同時監控多個活動會話的能力。憑借能夠快速隔離復雜問題根本原因的多維性能分析,以及對 SolarWinds PerfStack ?和 AppStack ?儀表板的集成支持,DPA 是一款功能強大的多功能工具。
DPA 也是用戶友好的,具有動態和直觀的用戶界面。它為小型和大型公司提供成本效益和可擴展性,適合經驗最少的數據庫管理員。您可以在此處訪問 DPA 的 14 天免費試用版。
SolarWinds 數據庫性能監視器 (DPM)
SolarWinds DPA 更加注重分析,而 DPM 則提供深入的監控功能。該工具為您提供了一種高效便捷的方式來實時監控數據庫的日常性能。使用 DPM,檢查很簡單,并且您可以獲得專家指導,填補了監控堆棧中潛在的關鍵空白。
DPA 提供 24/7 實時監控,幫助您實現減少失敗部署、可用性、部署頻率、MTTD、MTTR、變更提前期等的 KPI 目標。該工具會向您發送有關服務器配置更改和性能不佳查詢的即時建議。DPM 是應用程序開發的理想選擇,并且作為保持數據庫健康的一種方式在 DevOps 團隊中很受歡迎。
DPA 也是一種靈活的工具,允許您構建自定義儀表板,因此您可以將優先事項放在首位和中心位置。儀表板具有數據庫和系統的運行狀況摘要,讓您可以跟蹤指標并觀察趨勢。它們允許您探索性能異常值、管理資源容量等等。
DPM 可幫助您降低變更失敗率、加快恢復速度,并通過 DPM Notebooks 在團隊中分享您學到的知識。此實用程序允許您創建和共享包含文本、代碼片段、鏈接和圖像的事后分析文檔。借助 DPM,您可以通過將查詢響應或行為與系統指標關聯起來,深入了解查詢如何影響您的數據庫。該工具還允許您隔離異常行為和潛在影響因素,以及探索查詢詳細信息和性能(包括執行計劃、示例等)。
此 SaaS 平臺具有基于 Web 的用戶友好型用戶界面,使 DPM 適合經驗不足的用戶。與 DPA 一樣,DPM 提供跨平臺支持,包括 MySQL、MongoDB、PostgreSQL、Redis和 Amazon Aurora。DPM 有14 天的免費試用期。
開始使用性能改進數據庫技巧
實施本指南中提到的技巧而又不讓您的團隊工作量過大的最有效方法是利用專業軟件。雖然有大量可用的數據庫監控和分析工具,但強烈推薦使用 SolarWinds DPA 和 DPM。這些工具是可擴展的、用戶友好的,并提供了一系列合適的實用程序,旨在讓您以最小的努力顯著提高數據庫性能。