如今,許多組件有助于應用程序的性能,但數據庫是這些技術堆棧的基礎。當應用程序運行不良時,通常是由于數據庫級別的問題,包括:服務器停頓,不佳的查詢性能或延遲不佳。
這些只是工程團隊每天遇到的常見數據庫相關挑戰(zhàn)其中的三個。良好的數據庫性能監(jiān)控可以幫助數據庫管理員,開發(fā)人員和工程師快速診斷并解決這些問題。但是IT人員需要知道什么才能選擇正確的方法?
為了回答這個問題,IT人員需要首先了解應用程序監(jiān)視結束和數據庫監(jiān)控的開始。
應用程序的監(jiān)控還不足夠
企業(yè)的多層架構大部分是無狀態(tài)的,從而需要構建現代應用程序,這使得這些應用程序易于管理和擴展。但這也使得他們非常苛刻,發(fā)送無數次,有時是任意查詢數據庫,并假設他們將表現良好。因為他們是“有狀態(tài)的”,所有的重載都被委托給數據庫。
雖然大多數企業(yè)的主要關注點是應用程序性能,但這并不意味著企業(yè)只能關注使用應用程序性能監(jiān)視(APM)工具監(jiān)視應用程序。APM工具可以幫助企業(yè)識別緩慢的應用程序事務,但它們通常無法幫助診斷或解決問題。問題識別顯然很重要,但要快速診斷并解決企業(yè)需要深入數據庫的問題。
數據庫的監(jiān)控要點
數據庫監(jiān)控涉及的不僅僅是圖形計數器和隨著時間推移的CPU利用率。在一個復雜的現代架構中,數據庫可能是系統(tǒng)性能問題的主要原因,并且解決問題的根源需要深入挖掘。它從查詢監(jiān)視和工作負載分析,深入挖掘,以及異常檢測開始。
1.查詢監(jiān)視和工作負載分析數據庫唯一的原因是運行工作負載來執(zhí)行查詢。因此,了解數據庫是否健康和運行良好的唯一方法是衡量重要性:其工作負載是否成功,快速,一致地完成。查詢需要整體和單獨測量,需要深入分析。查詢工作負載是巨大而復雜的數據集。數據庫管理員和工程團隊需要能夠深入到個別的陳述執(zhí)行以檢查具體細節(jié);自動捕獲和分析查詢執(zhí)行計劃(EXPLAIN計劃);聚合和分段查詢快速找到大問題;并在不同的時間段內比較工作負載變化。
2.向下挖掘和縮放為了有效監(jiān)控大型的分布式混合系統(tǒng),監(jiān)控工具必須呈現聚合視圖,并能夠快速放大并向下挖掘到最高級別的細節(jié)。沒有高級的視圖,監(jiān)測是不可擴展的;但是沒有挖掘,無法有效解決問題。企業(yè)需要通過多個維度快速向下挖掘和放大,其中包括:主機,標簽,用戶,角色和時間范圍。對于大容量高度可擴展的環(huán)境,企業(yè)需要至少一秒的粒度和微秒精度,因為查詢性能通常為亞毫秒級。企業(yè)還必須能夠深入了解各個查詢,磁盤或進程。
3.異常檢測。對于數據庫監(jiān)控,數據量通常比通過基本系統(tǒng)監(jiān)控產生的數據量要大幾個數量級。人類無法開始處理數據量和數據的復雜性。傳統(tǒng)的監(jiān)控工具可讓企業(yè)生成關于靜態(tài)閾值的警報,例如“CPU超過90%”,但是這種方法沒有擴展。系統(tǒng)不斷變化;例如凌晨2點正常,而在下午2點的期望有很大的不同,曾經有意義的門檻可能在另一個內容中變得無關緊要。這就是為什么所有現代監(jiān)控工具都提供某種形式的異常檢測的原因。然而,對于數據庫監(jiān)視,由于正在發(fā)送的數據的變化和規(guī)模,這種能力尤為重要。通過異常檢測,企業(yè)可以使用“橫向邏輯”指標來進行自動基線測量和季節(jié)預測,這些指標可以測量“時間到磁盤已滿”,而不是在磁盤已滿時進行簡單的警報。
作為高性能系統(tǒng)的引擎,數據庫需要儀器可以快速發(fā)現問題和精確調整,以保持正常運行時間和可擴展性。面對不斷增長和復雜性,開發(fā)人員,工程師和數據庫管理員的工作只會越來越嚴格。充分了解性能指標可幫助用戶更好地了解數據庫影響整體應用程序性能和可用性的多種方式,以及優(yōu)化的方法,使應用程序運行在最佳性能。