数据库属性管理

您通过控制台查看或修改RDS SQL Server数据库的各类属性,也可以手动收缩数据库事务日志和更新数据库统计信息,以优化数据库性能和提高查询效率。

前提条件

已创建数据库。创建方法,请参见创建数据库

查看或修改数据库属性

注意事项

部分修改数据库属性的操作会导致该数据库进入短暂的独占模式,系统会断开当前该数据库的所有连接,回滚现有事务进行修改。当数据库负载较高时,修改操作可能会失败。因此建议您在业务低峰期执行该操作,以免影响业务的正常运行。

说明

独占模式是指在数据库中只允许一个用户或一个进程对数据库进行操作,其他用户或进程不能访问或操作该数据库,必须等待当前操作完成后才能进行下一步操作。

操作步骤

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中单击数据库管理

  3. 单击目标数据库操作列下的查看详情,查看数据库的属性值。

    说明

    各属性值的具体说明,请参见附录:数据库属性微软官方文档

    image.png

  4. Allowed Values列下修改属性值,单击提交

    image.png

收缩数据库事务日志

使用场景

如果数据库的事务日志文件使用量(LogUsedSizeInMB)相对于数据库事务日志文件总大小(TotalLogSizeInMB)的占比较小,并且该数据库的log_reuse_wait_desc属性为Nothing时,您可以通过收缩数据库事务日志减少该数据库日志文件的磁盘空间占用。

操作步骤

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中单击数据库管理

  3. 单击操作列下的更多 > 收缩数据库事务日志

  4. 单击确定

更新数据库统计信息

由于数据库中的数据量和分布会随着时间的推移而发生变化,您可以定期更新统计信息,以保证查询优化器的准确性和性能。

使用场景

  • 当数据库进行大版本升级时,新版本可能会引入新的数据类型、存储引擎或查询优化器等,这可能会导致旧的统计信息不再准确或不再适用。此时,您可以通过该功能来更新数据分布信息,以适应新版本引擎。

  • 当将数据库从线下转移到云端时,由于环境发生了变化,可能需要重新优化数据库性能。此时,您可以通过该功能来提高查询性能和优化查询计划。

  • 如果用户的业务数据分布不均匀,或者执行了大量的删除或更新操作但更新量不足20%,或者出现其他SQL Server内置自动更新统计信息无法覆盖的场景时,您可以通过该功能来提升查询性能。

    说明

    SQL Server默认会启用自动更新统计信息的机制,但在某些情况下,自动更新统计信息的频率可能会滞后于实际数据变化,从而导致查询性能下降。SQL Server自动更新统计信息的机制,请参见微软官方文档

注意事项

更新统计信息操作可能会导致较高的IO占用,因此建议您在业务低峰期执行该操作,以免影响业务的正常运行。

操作步骤

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中单击数据库管理

  3. 单击操作列下的更多 > 更新数据库统计信息

  4. 单击确定

附录:数据库属性

基础信息

属性名称

说明

page_verify

数据库页验证的级别。默认值为CHECKSUM,使用数据页的校验和进行验证。

target_recovery_time_in_seconds

在发生故障时,数据库恢复所需的目标时间(秒)。默认值为60。

compatibility_level

数据库与特定版本的兼容性级别。取值如下:

  • 100:Server 2008及更高版本。

  • 110:SQL Server 2012及更高版本。

  • 120:SQL Server 2014及更高版本。

  • 130:SQL Server 2016及更高版本。

  • 140:SQL Server 2017及更高版本。

  • 150:SQL Server 2019及更高版本。

  • 160:SQL Server 2022及更高版本。

parameterization

SQL Server如何处理参数。取值如下:

  • SIMPLE:只对常量参数进行参数化(默认值)。

  • FORCED:强制对所有参数进行参数化。

read_committed_snapshot

读取数据时是否使用快照隔离。取值如下:

  • OFF:禁用读取提交的快照,使用传统的读取锁定方式(默认值)。

  • ON:启用读取提交的快照,允许并发读操作而不会被写操作所阻塞。

collation_name

数据库的排序规则及字符编码。更多详情,请参见修改字符集排序规则与时区

auto_close

是否自动关闭数据库连接。默认值为OFF(关闭)。

recovery_model_desc

数据库的恢复模式。默认值为FULL,表示完整恢复模式。

auto_update_statistics

是否启用统计信息自动更新。取值如下:

  • ON:开启(默认值)

  • OFF:禁用

auto_update_statistics_async

是否异步更新统计信息。取值如下:

  • OFF:使用同步方式更新统计信息(默认值)。

  • ON:使用异步方式更新统计信息。

allow_snapshot_isolation

是否启用快照隔离级别。取值如下:

  • OFF:禁用(默认值)

  • ON:开启

state_desc

数据库状态。ONLINE表示数据库处于在线状态。

create_date

数据库创建时间。

log_reuse_wait_desc

当前日志文件不可以被重用的原因,NOTHING表示当前没有任何限制。

运行时信息

属性名称

说明

TotalDataSizeInMB

当前数据库的数据文件占用的总空间(MB)。

DataUsedSizeInMB

当前数据库的数据文件已使用的空间(MB)。

TotalLogSizeInMB

当前数据库的日志文件占用的总空间(MB)。

LogUsedSizeInMB

当前数据库的日志文件已使用的空间(MB)。

VLFCount

当前数据库的虚拟日志文件(VLF)的数量。

LastestBackupTime

当前数据库的最新备份的时间。

LastestBackupType

当前最近一次数据库备份的类型。取值如下:

  • D:Database,完整备份。

  • I:Differential,差异备份。

  • L:Log,日志备份。

高级信息

属性名称

说明

ansi_nulls

是否启用ANSI NULLS。如果启用,则等于NULL的值将不会与其他值进行比较,而是会被视为未知值。取值如下:

  • OFF:关闭(默认值)

  • ON:开启

recursive_triggers

是否允许触发器递归执行。取值如下:

  • OFF:关闭(默认值)

  • ON:开启

delayed_durability

是否启用延迟耐久性。延迟耐久性允许事务在提交后,将数据异步写入磁盘,从而提高事务处理性能。取值如下:

  • DISABLED:禁用延迟耐久性,事务在提交后会立即同步写入磁盘(默认值)。

  • ALLOWED:启用延迟耐久性,但并不强制要求所有事务都使用延迟耐久性。

  • FORCED:强制启用延迟耐久性,所有事务都必须使用延迟耐久性。

ansi_warnings

是否启用ANSI警告。启用后,如果执行的操作会导致警告,则会返回警告信息。取值如下:

  • OFF:关闭(默认值)

  • ON:开启

ansi_null_default

在插入数据时,如果指定的值为NULL,则该列是否接受NULL值。取值如下:

  • OFF:关闭(默认值)

  • ON:开启

ansi_padding

是否启用ANSI填充。启用后,如果插入的数据长度不足,则会使用填充符进行填充。取值如下:

  • OFF:关闭(默认值)

  • ON:开启

concat_null_yields_null

在拼接NULL值时,是否返回NULL。如果启用,则拼接NULL值时会返回NULL。取值如下:

  • OFF:关闭(默认值)

  • ON:开启

相关API

您可以通过API修改RDS SQL Server数据库属性,请参见ModifyDatabaseConfig - 修改数据库属性