このページは機械翻訳されています。英語の原文をお読みください。 English

IBAnalyst 現在是 HQbird Standard 的一部分!

IBAnalyst 是一款工具,允許資料庫管理員分析詳細的 Firebird 或 InterBase 資料庫統計資訊,然後識別資料庫效能、維護以及應用程式與資料庫互動方式可能存在的問題。

文件

IBAnalyst 以使用者友善的方式圖形化顯示 Firebird(或 InterBase)資料庫統計資訊,並標示以下問題:

  • 資料表與 BLOB 碎片化,
  • 記錄版本化,
  • 垃圾收集,
  • 索引效率等

此外,IBAnalyst 可以自動提出關於改善資料庫效能和資料庫維護的智慧建議。

IBAnalyst 可以透過 Services API(建議使用)從線上生產資料庫取得統計資訊,或分析 gstat -a -r … 命令的文字輸出。尖峰負載期間的統計資訊可以提供大量關於生產資料庫實際效能問題的資訊。

IBAnalyst 如何幫助您找出 Firebird 或 InterBase 資料庫中的問題

讓我們逐步了解 IBAnalyst 的主要功能。當您第一次在 IBAnalyst 中查看資料庫統計資訊時,事情可能不太清楚,尤其是當 IBAnalyst 在摘要、資料表和索引檢視中顯示大量以紅色和黃色儲存格標示的警告時。讓我們來看幾個實際的統計資訊範例。

摘要檢視

IBAnalyst 摘要

摘要頁面顯示大量資訊,但最有價值的是交易狀態(請閱讀 IBAnalyst 說明中有關可能交易狀態的描述,可透過按 F1 或選單中的「說明」取得)。

在此螢幕截圖中,您可以看到某個交易已長時間處於作用中狀態,「佔每日平均值的 60%」。IBAnalyst 以紅色標示此類交易狀態,因為此交易可能阻止伺服器將累積的版本視為垃圾,進而阻止其被垃圾收集。這可能是速度變慢的原因:某筆記錄存在的版本越多,讀取它所花費的時間就越長。

為了找出這個長時間執行的交易,您可以使用 FBScanner 的 MON$Logger 模組,或直接查詢 MON$ 資料表。然後,要找出哪些資料表受到長時間執行交易的影響(具有大量記錄版本的資料表),您需要前往 IBAnalyst 的「資料表」檢視。

資料表檢視

IBAnalyst 資料表

在「資料表」檢視中,您可以看到資料表及其重要參數:記錄數、記錄版本數、記錄長度、最大版本數等。

您可以排序此檢視以找出最大的資料表。我們特別關注具有大量記錄版本的資料表–大量記錄版本會使受影響資料表的垃圾收集時間更長。通常需要變更更新和刪除演算法以消除大量記錄版本。

「列版本」顯示特定資料表的總版本數,而「列最大版本」顯示某筆記錄達到的最大版本數。例如,如果您查看 NAB 資料表,有 1,190 萬筆記錄,總版本數為 20,932,但一筆記錄有 176 個版本。從磁碟讀取和解析此類資料包需要更多時間,因此讀取此記錄比讀取其他記錄慢。

此圖片也顯示了大量已刪除資料的資料表。但是,由於長時間執行的交易,伺服器無法刪除這些版本,它們仍然在磁碟上、仍然被索引、並且在讀取資料時仍會被伺服器讀取。

索引檢視

IBAnalyst 索引

某些生產資料庫可能具有僅索引單一鍵值的索引。這可能是因為資料庫是「為未來擴充」而開發的,或者有人在開發或測試期間嘗試了索引。您可以在 IBAnalyst 中將這些索引視為「無用」:

SKIN04、SKIN05、SKOUT03 等,建立在對所有列(數百萬列)僅有一個值的欄位上。這些索引確實無用,因為

  • 如果您指定「where field = …」,最佳化器可能會使用此索引。由於欄位僅包含一個值,使用索引將導致從磁碟到記憶體無用地讀取索引頁面,並在伺服器準備該查詢要顯示哪些列時消耗記憶體(和時間)。
  • 建立索引是還原程序的一部分。額外的索引會增加額外的時間。

當然,這不是您在 IBAnalyst 中可以找到的所有資訊。您還可以找到

  • 每天的平均交易數
  • 是否有回滾或連線中斷,以及何時發生
  • 每個資料表和索引的大小(以 MB 為單位)
  • 記錄與 BLOB 交錯的資料表,因此僅讀取記錄會較慢
  • 空資料表–只是被遺忘,或在取得統計資訊時為空
  • 具有大量重複鍵的索引(您可以考慮欄位值的分佈)
  • 深度為 4 或以上的索引–也許您需要增加頁面大小以加快速度

自動建議

如果您對閱讀彩色儲存格警告感到困惑,只需開啟「報表\檢視建議」–所有與資料庫效能相關的充分資訊都彙集於此。歡迎隨時提出任何問題([email protected]