日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

RDS SQL Server空間不足問題

RDS SQL Server實例的空間使用率是日常需要重點關注的監控項之一,實例的存儲空間不足,會導致嚴重后果,例如數據庫無法寫入、數據庫無法備份、存儲空間擴容任務耗時過長等。本文介紹如何查看空間使用情況以及排查空間問題。

查看空間使用情況

  • 您可以在實例的基本信息頁面查看存儲空間使用情況,但是這里只展示當前的空間使用總量,沒有展示各類數據分別占用的磁盤空間信息,也沒有空間使用的歷史信息。基本信息

  • 您可以在控制臺的監控與報警頁面,單擊舊版監控頁簽內的資源監控,查看實例各類數據占用的磁盤空間信息和歷史變化曲線。

    說明

    系統文件空間使用量包括系統數據庫master、msdb和model的所有數據文件和日志文件,以及一些系統文件(錯誤日志、默認跟蹤文件、系統擴展事件文件等)。

    磁盤空間
  • 您可以在控制臺的自治服務 > 空間管理頁面,查看更詳細的空間使用情況,包括數據與日志的空間使用對比、空間使用的歷史變化趨勢、Top數據庫和Top表的空間分配明細等。更多信息,請參見空間管理

    說明

    實例不能是RDS SQL Server 2008 R2云盤版。

    空間管理
  • 您也可以使用客戶端工具,例如SQL Server Management Studio,查看實例的空間使用信息。

    常用的查看SQL Server數據庫空間使用信息的命令如下。

    系統視圖或命令

    說明

    sp_helpdb

    查看所有數據庫各自的總空間大小(數據文件與日志文件大小之和)。

    sp_spaceused

    查看當前數據庫的名稱、已使用空間大小和未分配空間大小。

    DBCC SQLPERF(LOGSPACE)

    查看所有數據庫的各自日志文件總空間大小以及實際已使用日志空間大小。

    DBCC SHOWFILESTATS

    查看當前數據庫的所有數據文件空間大小以及實際已使用數據空間大小。

    select * from sys.master_files

    查看所有數據庫各自的數據和日志文件的大小。

    select * from sys.dm_db_log_space_usage

    查看當前數據庫的日志文件的總空間大小以及實際已使用日志空間大小。

    說明

    僅適用于SQL Server 2012及以上版本。

    select * from sys.dm_db_file_space_usage

    查看當前數據庫的數據文件的總空間大小以及實際已使用數據空間大小。

    說明

    僅適用于SQL Server 2012及以上版本。

如果發現實例的空間使用率過高,首先應該在RDS管理控制臺監控與報警頁面中檢查數據、日志、臨時文件、系統文件各部分的空間使用情況,確認是哪種文件的空間增長過快,并進一步評估能否采取措施釋放空間或避免空間快速增長。

詳細的分析與解決方案請參見下文。

回收和釋放數據空間

  • 分析

    數據空間的總大小(即所有數據文件大小總和)是由已分配(Allocated)空間和未分配(Unallocated)空間兩部分組成:

    • 已分配空間包括已使用(Used)空間和未使用(Unused)空間,未使用空間只能分配給同一表或索引新增的記錄使用,其他數據庫對象無法直接使用。

    • 未分配空間是由完全未分配的區(Extent)構成的,每個區是連續的64 KB空間。未分配空間不和任何數據庫對象關聯,這部分空間可以通過收縮文件的方式釋放。

  • 解決方案

    在數據量持續增長的情況下,未分配空間通常很小,所以直接收縮文件效果很差,建議首先對已分配空間進行優化和回收,然后再考慮收縮文件。

    數據空間的回收通常有如下幾種方式:

    • 歸檔數據

      刪除數據庫中不常用的數據(例如早期的歷史數據),或者根據需要遷移到其他數據庫實例中,或者以其他形式歸檔保存,通過直接減少數據量來降低已使用數據空間大小。

      這種方式是控制數據空間增長的有效手段,但是對數據庫對象結構及相關應用邏輯的設計有一定要求,需要應用設計和開發人員的參與配合。

    • 壓縮數據

      SQL Server 2016及以上版本實例,或2016以下的企業版實例,內置數據壓縮功能,您可以在單個表、索引或分區上開啟壓縮功能,包括行壓縮和頁壓縮。更多信息,請參見Data Compression

      數據壓縮比由表結構、列的數據類型和數值分布情況等決定,跨度較大,例如從10%到90%。SQL Server中提供了一個專用的存儲過程sp_estimate_data_compression_savings可以幫助您快速評估在指定的表或索引上開啟壓縮可以節省多少數據存儲空間。

      說明
      • 修改表或索引上的壓縮選項設置是DDL操作,大表執行此類操作會造成長時間鎖表,可能影響業務,建議在業務低峰期修改。

      • RDS SQL Server企業版實例可以設置參數ONLINE為ON,然后執行修改操作,基本不會影響正常業務。

      • 數據壓縮會增加CPU開銷,因此需要根據實際業務情況進行評估,建議只在大表上啟用數據壓縮。

    • 整理索引碎片

      索引碎片率較高會導致實際占用的數據存儲空間過大,因此對索引執行碎片整理可以降低數據空間大小。

      您可以在控制臺的自治服務 > 性能優化頁面,單擊索引使用率頁簽,可以查看各表的索引碎片率統計結果,并且自治服務會提供索引重建(Rebuild)或重組(Reorganize)建議。

      整理索引碎片
      • 重建(Rebuild)操作

        優化效果較好,對于碎片率高的情況執行效率更高,默認情況下執行過程中會鎖表,企業版中可以設置參數ONLINE為ON避免長時間鎖表。

      • 重組(Reorganize)操作

        對于碎片率較低的情況執行效率更高,但優化效果不如重建。

      索引碎片率統計的是邏輯上相鄰的索引頁在物理位置上不一致的比例,和索引頁中的空閑空間比例不是一個概念,只是碎片率較高的索引大概率也是可回收空間比例較大的索引。

      如果需要分析某個索引的頁內平均空閑空間比例,可以使用SAMPLED或DETAILED模式查詢系統視圖sys.dm_db_index_physical_stats,然后參考結果集中avg_page_space_used_in_percent列的值。更多信息,請參見sys.dm_db_index_physical_stats (Transact-SQL)

      說明

      查詢過程會讀取大量索引頁,可能影響數據庫性能,請在業務低峰期操作。

      整理索引碎片只適用于更新頻率很低的歸檔數據表,如果有頻繁的插入和更新操作,索引碎片率會很快升高,而且重建或重組的過程中,會產生大量事務日志,導致日志空間的增加。

以上操作通常可以有效降低數據空間大小,但是如果實例空間仍然有壓力,可以執行DBCC SHRINKFILE命令收縮數據文件,將數據文件中未分配空間釋放給操作系統。

案例

以上圖為例,一個區(Extent)的大小為64 KB,因此數據文件的總空間大小為104584 MB,已分配空間為82089 MB,即壓縮后數據文件空間的總大小不會低于82089 MB。要將該數據文件空間的總大小縮小到90000MB,可以執行如下命令:

DBCC SHRINKFILE(1, 90000)

更多信息,請參見Shrink a DatabaseDBCC SHRINKFILE (Transact-SQL)

回收日志空間

回收日志空間比較簡單,使用DBCC SQLPERF(LOGSPACE)命令或自治服務查看數據庫的日志文件空間中實際已使用部分的比例,如果已使用部分的比例較高,收縮日志文件幾乎沒有效果,可以查詢系統視圖sys.databases,通過log_reuse_waitlog_reuse_wait_desc列的輸出信息判斷空間為何無法回收。

說明

log_reuse_waitlog_reuse_wait_desc的取值說明請參見sys.databases (Transact-SQL)

絕大部分情況下,您不需要手動對日志文件執行收縮操作,每次自動備份后都會收縮日志文件,如果確實需要盡快收縮日志文件大小,例如日志文件增長導致實例可用存儲空間過低,且無法等到下一次的自動備份開始,您可以在實例的備份恢復頁面單擊收縮事務日志,RDS會自動備份所有的事務日志并收縮日志文件。

說明

收縮事務日志需要等待日志備份完成,因此如果執行該操作時數據庫中還有大量未備份過的日志,則需要等待較長時間。

收縮事務日志

回收臨時文件空間

  • 分析

    臨時文件空間是指系統數據庫tempdb占用的空間大小。由于tempdb庫總是使用簡單恢復模式,因此tempdb庫的日志文件通常很小,但是數據文件容易增長地很快,例如創建大量臨時表、連接大表或排序等都可能導致tempdb庫數據文件空間增加。

  • 解決方案

    • 盡量從數據庫應用層面規避,例如減少不必要的臨時表、大表連接查詢、避免大事務等。

    • 在業務低峰期重啟RDS實例,重啟后tempdb庫占用的空間會恢復到實例創建時的大小。

回收系統文件空間

  • 分析

    系統文件空間是指系統數據庫master、msdb、model,以及系統目錄下的一些文件占用的空間大小。這些文件通常都很小,但是某些情況下占用的空間會很大,例如:

    • 錯誤日志較多,錯誤日志文件大小增長到幾 GB甚至更大。

    • 嚴重異常時自動產生的內存轉儲(memory dump)文件。

  • 解決方案

    您無法直接獲知各類系統文件實際占用的空間大小。

擴容存儲空間

如果RDS實例空間使用率過高,且參考上文后無法有效降低空間使用率,應及時擴容實例存儲空間。具體操作,請參見變更配置