跳至內容

如何在 Amazon RDS for SQL Server 資料庫執行個體中最佳化儲存消耗量?

2 分的閱讀內容
0

Microsoft SQL Server 資料庫執行個體的 Amazon Relational Database Service (Amazon RDS) 使用的空間超出預期。我想最佳化我的磁碟儲存。

簡短說明

您可以使用 Amazon CloudWatch 中的 FreeStorageSpace 指標來監控資料庫執行個體的可用儲存空間。FreeStorageSpace 指標不能說明 SQL Server 引擎如何使用可用儲存空間。經常監控此指標,並開啟儲存空間自動調整功能,以確保您不會耗盡儲存空間。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

Amazon RDS for SQL Server 執行個體處於儲存空間已滿狀態

當 Amazon RDS 執行個體停留在儲存空間已滿狀態時,您無法執行基本作業。如需詳細資訊,請參閱如何解決 Amazon RDS 資料庫執行個體儲存空間不足時發生的問題?

某些 SQL Server 資料庫執行個體的 RDS 對修改儲存空間的方式有限制。如果您的資料庫執行個體不符合修改的資格,則會停用 Amazon RDS 主控台中的已配置儲存空間選項。若要在修改選項無法使用時擴展執行個體的儲存空間,請使用原生備份和還原將資料移轉至新的執行個體。確定新執行個體具有已佈建每秒讀寫次數 (IOPS) 或一般用途 (SSD) 儲存空間類型。或者,使用資料移轉工具移轉至新執行個體。如需詳細資訊,請參閱修改 Amazon RDS 資料庫執行個體

若要查看資料庫執行個體的有效儲存空間選項,請執行 describe-valid-db-instance-modifications 命令:

describe-valid-db-instance-modifications

注意:使用磁性儲存空間之 SQL Server 執行個體的 RDS 不支援擴展儲存空間和儲存空間自動調整。

對於已開啟儲存空間自動調整的執行個體,僅有在特定情況下才可以擴展儲存空間。如需詳細資訊,請參閱使用 Amazon RDS 儲存空間自動調整自動管理容量。此外,您僅能在最大儲存空間臨界值不等於或超過儲存空間增量時,才能擴展儲存空間。如需詳細資訊,請參閱限制

SQL Server 執行個體之 RDS 的儲存空間消耗量

若要取得關於 SQL Server 資料庫執行個體之 RDS 的實體磁碟空間使用量的資訊,請執行類似下列範例的查詢:

SELECT D.name AS [database_name]    
    , F.name AS [file_name]
    , F.type_desc AS [file_type]
    , CONVERT(decimal(10,2), F.size * 0.0078125) AS [size_on_disk_mb]
    , CONVERT(decimal(10,2), F.max_size * 0.0078125) AS [max_size_mb]
FROM sys.master_files AS F
INNER JOIN sys.databases AS D
    ON F.database_id = D.database_id;

包含 ROWS 的檔案由資料組成,而包含 LOGS 的檔案則代表進行中交易。

如需詳細資訊,請參閱 Microsoft 網站上的 sys.master_files (Transact-SQL)

注意: sys.master_files 系統檢視會顯示 tempdb 的起始大小。其不會反映 tempdb 的目前規模。

若要檢查 tempdb 的目前規模,請執行下列查詢:

select name AS [database_name], physical_name AS [file_name],
convert(decimal(10,2),size*0.0078125) AS [size_on_disk_mb]
from tempdb.sys.database_files;

在最佳化儲存空間之前,請務必瞭解 SQL Server 引擎如何使用儲存空間。在下列類別中廣泛定義 SQL Server 引擎儲存空間:

資料庫檔案

您可以將個別資料庫使用的總儲存空間細分為目前作用中資料庫中的列、索引和可用空間。若要細分總儲存空間,請執行下列查詢:

EXEC sp_spaceused;

交易日誌檔案

若要判斷交易日誌使用的儲存空間量,請執行下列查詢:

DBCC SQLPERF(LOGSPACE)

您可能會在交易日誌中看到可用空間。若要取消配置過多的可用空間,請執行 DBCC SHRINKFILE 命令。如需詳細資訊,請參閱 Microsoft 網站上的 DBCC SHRINKFILE (Transact-SQL)

若要減少交易日誌的可用空間過多配置,可以使用 ALTER DATABASE (transact-SQL) 檔案和檔案群組選項。這些選項會設定資料庫的自動增長設定。如需詳細資訊,請參閱 Microsoft 網站上的 ALTER DATABASE (Transact-SQL) 檔案和檔案群組選項

臨時資料庫 (tempdb)

SQL Server tempdb 會自動增長。如果 tempdb 消耗大量可用儲存空間,則您可以壓縮 tempdb 資料庫

注意:如果您壓縮 tempdb 資料庫,則請於執行命令之後在 SQL Server Management Studio (SSMS) 的訊息索引標籤檢查是否有錯誤訊息。

如果您收到 「DBCC SHRINKFILE: Page could not be moved because it is a work table page」錯誤訊息,則請參閱 Microsoft 網站上的 DBCC FREESYSTEMCACHE (Transact-SQL)DBCC FREEPROCCACHE (Transact-SQL)。您也可以重新啟動資料庫執行個體以清除 tempdb。

儲存空間已滿狀態的資料庫執行個體可能無法重新啟動。如果發生這種情況,請增加資料庫執行個體的配置儲存空間,然後再次嘗試重新啟動。如需詳細資訊,請參閱如何解決 Amazon RDS 資料庫執行個體儲存空間不足時發生的問題?

資料庫索引

如果您將大量的可用儲存空間用於索引,則可以透過索引調整來節省一些空間。若要取得索引使用情況的相關資訊,請執行 sys.dm_db_index_usage_stats 動態管理檢視。這可以協助您評估調整優先順序。如需詳細資訊,請參閱 Microsoft 網站上的 sys.dm_db_index_usage_stats (Transact-SQL)

追蹤檔案

追蹤檔案 (包括 C2 稽核追蹤檔案和傾印檔案) 可能會消耗大量磁碟空間。Amazon RDS 會自動刪除超過 7 天的追蹤和傾印檔案,但您也可以調整追蹤檔案的保留期設定。如需詳細資訊,請參閱設定追蹤和傾印檔案的保留期

Amazon S3 整合消耗的空間

如果您將 RDS 資料庫執行個體與 Amazon S3 整合,可能已將檔案上傳到佔用空間的 D: 磁碟機。若要檢查 S3 整合佔用了多少空間,請執行命令以列出資料庫執行個體上的檔案。如需詳細資訊,請參閱列出 RDS 資料庫執行個體上的檔案

CDC

對於已開啟 CDC 的資料庫,日誌檔案大小會根據來源資料表或資料庫的變更頻率而增加。儲存空間最終可能會耗盡。如果日誌磁碟已滿,則 CDC 無法處理進一步的交易。

稽核

如果未正確設定執行個體的稽核,日誌可能會呈指數級增長,並影響儲存空間。如需詳細資訊,請參閱 SQL Server 稽核

C2 稽核模式會將大量事件資訊儲存至日誌檔案。日誌檔案可能會快速增長,使執行個體進入儲存空間已滿狀態。如需詳細資訊,請參閱 Microsoft 網站上的 C2 稽核模式 (伺服器組態選項)

此外,如果您開啟查詢存放區等功能,則您的資源使用率可能會受到影響。

相關資訊

Amazon RDS for Microsoft SQL Server

監控 Amazon RDS 執行個體中的指標

Amazon RDS 資料庫執行個體儲存體不足

將 Microsoft SQL Server 資料庫遷移至 AWS Cloud