RedShift平臺負擔了大量的集群和數據庫管理工作,但也并非面面俱到。有些AWS工具便填補了監控方面的空白。
Amazon RedShift是一個建立在PostgreSQL基礎之上的數據倉庫平臺。Amazon Web Service處理了大多數集群和數據庫軟件管理方面的工作,使平臺有著很好的易用性。但這并不意味著就可以對其撒手不管。管理員必須對集群進行監控并確保數據庫能夠滿足性能需求。而且,AWS提供了一些可以幫助檢測潛在性能問題的重要監控工具。
Amazon Redshift 在兩類數據倉庫性能監控上起著重要作用:系統性能監控和查詢性能監控。系統監控的目標是確保你擁有合適的計算資源來滿足當前需求。而查詢監控則是設計用來幫助識別劣質的數據庫代碼并且可以滿足終端用戶的報表需求。
CloudWatch:系統性能監控工具AWS CloudWatch是一款系統性能監控工具,它可以提供關于系統監控的相關指標,以及更為詳細的信息,諸如CUP利用率,存儲利用率等。CloudWatch最基本的功能是HealthStatus檢查,它類似于一個服務器連接性測試(例如:ping)。CloudWatch給一個集群發送查詢并以“健康”或“不健康”的診斷進行回應。
CPU利用率指標可以幫助確定集群大小是否合適。例如,如果CPU利用率一向偏高——在相當長的一段時間內高于80%——那就需要考慮調整集群的大小。同時,如果利用率始終偏低——低于40%——那么你就可以縮減集群。關系型數據庫通常是CPU密集型的,尤其是在做連接操作的時候,因此對CPU指標進行跟蹤是非常重要的。
這些指標還可以幫助發掘優化數據加載流程的方法。如果某些數據加載工作要執行CPU密集型操作,那么應該將它們安排在大量查詢時間之外。云具有彈性,它可以允許IT團隊根據需要添加和移除服務器。但是,如果存在一個明確的需求模式并且任務可以根據需求進行調整,那么這樣就會節省某些管理開銷。
CloudWatch還可以監控讀/寫IOPs,這在使用預分配IOPs時是很有幫助的。如果對終端用戶來說性能緩慢,那么管理員可能就會為特定的負載預先配置更多的資源。同樣,如果實際IOPs比預分配的低得多,那么這就可能是一個信號,即IT可能閑置了太多的IOPs。還有其他的指標包括存儲磁盤利用率,讀/寫吞吐量,讀/寫延時以及網絡吞吐量等。
負載性能監控系統性能監控只是維護集群健康的一環。查詢和負載性能監控是很重要的,對于頻繁使用的查詢尤為如此。大量用戶通常會使用少量的查詢,而對這些查詢進行調優是非常值得的。
查詢詳情描述可用于AmazonRedShift查詢。它包含一條SQL語句,可以展示是如何將SQL翻譯成一系列程序步驟的,例如讀取一個索引,讀取數據塊或是執行一個循環來連接記錄。
留意那些非預期的或是丟失的步驟。例如,如果你希望數據庫使用一條索引,但是它并沒有對全表進行掃描,那么該索引可能是被誤刪除了。Load Summary和Load Detail報告同樣可用,它們都能提供特定時間點特定負載的詳細信息。收集到的信息包括查詢ID,異常編號,運行過的SQL語句,以及運行一個查詢所消耗的時間。
Amazon Redshift從控制面板進行直接訪問讓尋找這些信息變得輕而易舉。值得注意的是,可以在Redshift面板進行查詢和加載數據。CloudWatch界面可以讓你同時查看多個指標。這在尋找系統同步壓力點時是很有幫助的,例如在某些操作非常依賴讀取和計算資源的情況下便是如此。管理員也可能會更改顯示的時間范圍來調整你想要監控的時間段,同時還能更改測量時間(例如,從五分鐘變為十分鐘)。
RedShift可以幫助減輕數據倉庫管理員的負擔。但實際上,它仍需要知識豐富的管理員來對系統性能和查詢性能指標進行監控。