存儲空間的常見問題
本文列舉了RDS實例有關(guān)存儲空間的常見問題供您參考。
存儲空間是否可以直接擴容?是否需要遷移數(shù)據(jù)?擴容有什么影響?
存儲空間可以直接擴容,如果實例所在主機的存儲空間不夠用,系統(tǒng)會在擁有足夠存儲空間的主機上自動新建主備實例,并同步原實例數(shù)據(jù)。
關(guān)于如何擴容存儲空間以及擴容是否會閃斷,請參見:
擴容如何計費?
RDS實例擴容后計費將會發(fā)生變化,具體詳情,請參見變配的計費規(guī)則。
存儲空間占用突然升高,如何排查?
RDS實例列表頁面,在上方選擇地域,然后單擊目標實例ID。
在左側(cè)導航欄中單擊監(jiān)控與報警,查看實例占用存儲空間的主要文件類型和變化趨勢。
如何刪除文件來釋放空間?
為什么新建的數(shù)據(jù)庫沒有任何數(shù)據(jù),就已經(jīng)產(chǎn)生了磁盤使用量?
數(shù)據(jù)庫初始化時,會創(chuàng)建相關(guān)的系統(tǒng)表用于存儲賬戶、權(quán)限等。此外,數(shù)據(jù)庫系統(tǒng)的日志(Redo、Undo等)也會占用磁盤空間。
為什么從其它異構(gòu)數(shù)據(jù)庫導入數(shù)據(jù),MySQL占用了更多空間?
不同的數(shù)據(jù)庫存儲引擎處理數(shù)據(jù)的方式不同,例如,是否有壓縮功能、在某些字段上是否有索引等都會影響占用的存儲空間。
RDS實例的存儲空間是否包含備份空間?
在RDS控制臺的實例基本信息頁面的使用量統(tǒng)計中的存儲空間的統(tǒng)計值,僅為實例空間,不含備份空間。備份空間的使用量,請參見備份大小。
RDS實例存儲空間占滿后,會在多長時間內(nèi)進入“鎖定中”狀態(tài)?
RDS實例存儲空間占滿后,實例將自動鎖定并進入“鎖定中”狀態(tài)。然而,由于巡檢機制的存在,實例狀態(tài)的改變可能會有一定的延遲。
RDS實例一旦被鎖定,將無法進行數(shù)據(jù)寫入。建議您配置告警,以避免存儲空間占滿而導致實例鎖定的情況發(fā)生。同時,您可以設(shè)置存儲空間自動擴容,在存儲空間不足時,實例會自動擴容存儲空間,具體操作:
RDS MySQL實例請參見設(shè)置存儲空間自動擴容。
RDS PostgreSQL實例請參見設(shè)置存儲空間自動擴容。
RDS SQL Server實例請參見設(shè)置存儲空間自動擴容。
對于RDS MySQL實例,您還可以開啟空間碎片自動回收,及時清理空間碎片,回收存儲空間。
RDS SQL Server實例刪除大量數(shù)據(jù)后,為什么磁盤空間并沒有減少?
在RDS SQL Server中執(zhí)行DELETE
操作刪除大量數(shù)據(jù)后,磁盤空間沒有減少的原因與數(shù)據(jù)庫管理系統(tǒng)的設(shè)計機制和日志記錄行為有關(guān):
事務日志記錄:SQL Server為了保證數(shù)據(jù)的一致性和可恢復性,會對每一次數(shù)據(jù)操作(包括
DELETE
)進行詳細的日志記錄。表示即使數(shù)據(jù)被標記為刪除,相應的日志條目仍會占據(jù)磁盤空間,可能導致磁盤使用量不減反增。數(shù)據(jù)頁未釋放:在SQL Server中,數(shù)據(jù)存儲在數(shù)據(jù)頁中,當數(shù)據(jù)被刪除時,這些數(shù)據(jù)頁并不立即回收,而是被標記為可重用。目的是為了提高后續(xù)插入操作的效率,避免頻繁的物理磁盤整理操作。因此,雖然數(shù)據(jù)被邏輯上刪除,但物理空間并未立即歸還給操作系統(tǒng)。
表和索引碎片:刪除數(shù)據(jù)后,可能會在表和索引中留下空洞,導致存儲空間變得碎片化,但這部分空間仍然被數(shù)據(jù)庫認為是已分配的。
若要實際回收這部分空間,建議采取以下措施:
收縮數(shù)據(jù)庫或文件組:使用
DBCC SHRINKDATABASE
或DBCC SHRINKFILE
命令可以嘗試回收未使用的空間并減少數(shù)據(jù)文件的大小。重要該過程可能會很耗時,且頻繁收縮可能對性能產(chǎn)生負面影響。更多詳情,請參見解決SQL Server實例空間滿自動鎖的問題或RDS SQL Server空間不足問題。
重建索引:刪除大量數(shù)據(jù)后,索引可能變得碎片化,重建索引可以幫助整理數(shù)據(jù)頁,回收空間,同時提高查詢效率。
備份事務日志:對于使用完整恢復模式的數(shù)據(jù)庫,定期備份事務日志可以截斷日志,釋放日志空間。更多詳情,請參見管理日志、簡單恢復模式介紹。
考慮TRUNCATE TABLE:
TRUNCATE TABLE
在合適場景下較DELETE
更高效,它會直接釋放數(shù)據(jù)頁而不產(chǎn)生大量日志,執(zhí)行速度更快。重要TRUNCATE
操作不可逆,且不支持帶有WHERE
條件。
綜上,如需實現(xiàn)磁盤空間的有效縮減,需要根據(jù)實際情況采取多種措施,以此優(yōu)化數(shù)據(jù)庫的磁盤空間。