您通过控制台查看或修改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 - 修改数据库属性。