Sql-Server

數據庫未分配空間 - 正確的測量方法

  • May 22, 2021

我對網路重新計算數據庫大小和可用空間的幾個腳本感到困惑。

Web 上的大多數腳本都使用 sys.databases_files dmv 來計算可用空間,例如此處此處

但是,如果我們通過 GUI 從 sp_spaceused 或數據庫屬性中看到一個可用空間量是不同的。我得到它是差異的原因,因為它在 (0,2,4) 中的類型上有過濾器,它不包括日誌文件。

但我無法理解哪一個是正確的以及為什麼日誌文件被排除在 sp_spaceused 之外,還是 web 上的腳本不正確並顯示其他內容?

您必須提供您所指的腳本,以便我們能夠就其準確性向您提供建議,但如果它們是基於DMVsys.database_files的,那麼您很有可能正在尋找適合他們目的的東西’的目的。

sp_spaceused專門設計用於告訴您數據庫內數據的大小,無論是整個數據庫本身還是單個表或索引視圖:

顯示目前數據庫中表、索引視圖或Service Broker隊列的行數、保留的磁碟空間和使用的磁碟空間,或顯示整個數據庫保留和使用的磁碟空間。

事務日誌儲存在不同的文件中,與數據庫及其文件相比,它是一種不同類型的對象和概念。在不包括具有不同用途的事務日誌文件的情況下,測量數據庫作為一個整體或單個表或索引視圖消耗的空間的案例通常更有用。

事務日誌是自上次備份日誌文件以來事務的執行日誌(因此得名),以協助數據庫的恢復以確保ACID原則得到保證。隨著越來越多的事務寫入日誌文件,它的大小(內部)通常會波動,直到發生事務日誌備份。它沒有特定的索引概念,也沒有針對目前時間點的整體數據,而是數據如何成為數據庫中目前狀態的歷史。

sp_spaceused有助於在數據庫級別為您提供有關reserved磁碟總空間的資訊,數據庫中使用了多少空間與總空間有data多大,以及數據和索引將使用index_size的剩餘空間unused隨著他們的成長。此外,在表或索引視圖級別,除了前面提到的數據點之外,它甚至會告訴您表中的行數(有效地使用元數據)。

要了解數據庫的總體增長趨勢,可以定期查看或記錄結果,sp_spaceused因為數據大小(和索引大小)的變化將指示該指標,而不是任何給定時間的事務日誌大小,本身。

引用自:https://dba.stackexchange.com/questions/292036