您通過控制臺查看或修改RDS SQL Server數據庫的各類屬性,也可以手動收縮數據庫事務日志和更新數據庫統計信息,以優化數據庫性能和提高查詢效率。
前提條件
已創建數據庫。創建方法,請參見創建數據庫。
查看或修改數據庫屬性
注意事項
部分修改數據庫屬性的操作會導致該數據庫進入短暫的獨占模式,系統會斷開當前該數據庫的所有連接,回滾現有事務進行修改。當數據庫負載較高時,修改操作可能會失敗。因此建議您在業務低峰期執行該操作,以免影響業務的正常運行。
獨占模式是指在數據庫中只允許一個用戶或一個進程對數據庫進行操作,其他用戶或進程不能訪問或操作該數據庫,必須等待當前操作完成后才能進行下一步操作。
操作步驟
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄中單擊數據庫管理。
單擊目標數據庫操作列下的查看詳情,查看數據庫的屬性值。
在Allowed Values列下修改屬性值,單擊提交。
收縮數據庫事務日志
使用場景
如果數據庫的事務日志文件使用量(LogUsedSizeInMB)相對于數據庫事務日志文件總大小(TotalLogSizeInMB)的占比較小,并且該數據庫的log_reuse_wait_desc屬性為Nothing時,您可以通過收縮數據庫事務日志減少該數據庫日志文件的磁盤空間占用。
操作步驟
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄中單擊數據庫管理。
單擊操作列下的更多 > 收縮數據庫事務日志。
單擊確定。
更新數據庫統計信息
由于數據庫中的數據量和分布會隨著時間的推移而發生變化,您可以定期更新統計信息,以保證查詢優化器的準確性和性能。
使用場景
當數據庫進行大版本升級時,新版本可能會引入新的數據類型、存儲引擎或查詢優化器等,這可能會導致舊的統計信息不再準確或不再適用。此時,您可以通過該功能來更新數據分布信息,以適應新版本引擎。
當將數據庫從線下轉移到云端時,由于環境發生了變化,可能需要重新優化數據庫性能。此時,您可以通過該功能來提高查詢性能和優化查詢計劃。
如果用戶的業務數據分布不均勻,或者執行了大量的刪除或更新操作但更新量不足20%,或者出現其他SQL Server內置自動更新統計信息無法覆蓋的場景時,您可以通過該功能來提升查詢性能。
說明SQL Server默認會啟用自動更新統計信息的機制,但在某些情況下,自動更新統計信息的頻率可能會滯后于實際數據變化,從而導致查詢性能下降。SQL Server自動更新統計信息的機制,請參見微軟官方文檔。
注意事項
更新統計信息操作可能會導致較高的IO占用,因此建議您在業務低峰期執行該操作,以免影響業務的正常運行。
操作步驟
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄中單擊數據庫管理。
單擊操作列下的更多 > 更新數據庫統計信息。
單擊確定。
附錄:數據庫屬性
基礎信息
屬性名稱 | 說明 |
page_verify | 數據庫頁驗證的級別。默認值為CHECKSUM,使用數據頁的校驗和進行驗證。 |
target_recovery_time_in_seconds | 在發生故障時,數據庫恢復所需的目標時間(秒)。默認值為60。 |
compatibility_level | 數據庫與特定版本的兼容性級別。取值如下:
|
parameterization | SQL Server如何處理參數。取值如下:
|
read_committed_snapshot | 讀取數據時是否使用快照隔離。取值如下:
|
collation_name | 數據庫的排序規則及字符編碼。更多詳情,請參見修改字符集排序規則與時區。 |
auto_close | 是否自動關閉數據庫連接。默認值為OFF(關閉)。 |
recovery_model_desc | 數據庫的恢復模式。默認值為FULL,表示完整恢復模式。 |
auto_update_statistics | 是否啟用統計信息自動更新。取值如下:
|
auto_update_statistics_async | 是否異步更新統計信息。取值如下:
|
allow_snapshot_isolation | 是否啟用快照隔離級別。取值如下:
|
state_desc | 數據庫狀態。ONLINE表示數據庫處于在線狀態。 |
create_date | 數據庫創建時間。 |
log_reuse_wait_desc | 當前日志文件不可以被重用的原因,NOTHING表示當前沒有任何限制。 |
運行時信息
屬性名稱 | 說明 |
TotalDataSizeInMB | 當前數據庫的數據文件占用的總空間(MB)。 |
DataUsedSizeInMB | 當前數據庫的數據文件已使用的空間(MB)。 |
TotalLogSizeInMB | 當前數據庫的日志文件占用的總空間(MB)。 |
LogUsedSizeInMB | 當前數據庫的日志文件已使用的空間(MB)。 |
VLFCount | 當前數據庫的虛擬日志文件(VLF)的數量。 |
LastestBackupTime | 當前數據庫的最新備份的時間。 |
LastestBackupType | 當前最近一次數據庫備份的類型。取值如下:
|
高級信息
屬性名稱 | 說明 |
ansi_nulls | 是否啟用ANSI NULLS。如果啟用,則等于NULL的值將不會與其他值進行比較,而是會被視為未知值。取值如下:
|
recursive_triggers | 是否允許觸發器遞歸執行。取值如下:
|
delayed_durability | 是否啟用延遲耐久性。延遲耐久性允許事務在提交后,將數據異步寫入磁盤,從而提高事務處理性能。取值如下:
|
ansi_warnings | 是否啟用ANSI警告。啟用后,如果執行的操作會導致警告,則會返回警告信息。取值如下:
|
ansi_null_default | 在插入數據時,如果指定的值為NULL,則該列是否接受NULL值。取值如下:
|
ansi_padding | 是否啟用ANSI填充。啟用后,如果插入的數據長度不足,則會使用填充符進行填充。取值如下:
|
concat_null_yields_null | 在拼接NULL值時,是否返回NULL。如果啟用,則拼接NULL值時會返回NULL。取值如下:
|
相關API
您可以通過API修改RDS SQL Server數據庫屬性,請參見ModifyDatabaseConfig - 修改數據庫屬性。