您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_setrowlockpromote

语法


sp_setrowlockpromote "server", NULL, <new_lwm>, <new_hwm>, <new_pct>

sp_setrowlockpromote {"database" | "table"},
    <objname>, <new_lwm>, <new_hwm>, <new_pct>

参数

server

为行锁升级阈值设置全服务器范围的值。

"database" | "table"

指定为数据库还是为表设置行锁升级阈值。

<objname>

是要设置行锁升级阈值的表或数据库的名称或 null(如果要设置全服务器范围的值)。

<new_lwm>

指定要为低水印(LWM)阈值设置的值。LWM 必须小于或等于高水印(HWM)。LWM 的最小值是 2。该参数可以是 null。

<new_hwm>

指定要为高水印(HWM)阈值设置的值。HWM 必须大于或等于 LWM。HWM 的最大值是 2,147,483,647。该参数可以是 null。

<new_pct>

指定要为锁升级百分比(PCT)阈值设置的值。PCT 必须介于 1 到 100 之间。该参数可以是 null。

示例

示例 1

为 engdb 数据库中的所有数据行锁定表设置行锁升级值:


sp_setrowlockpromote "database", engdb, 400, 400, 95

示例 2

为 sales 表设置行锁升级值:


sp_setrowlockpromote "table", sales, 250, 250, 100

用法

使用 sp_setrowlockpromote 时,还存在一些其它注意事项:

  • 可以使用 sp_helpdb 来显示数据库级别的锁升级,使用 sp_helpdb <tablename> 来显示表级别的锁。

  • sp_setrowlockpromote 可设置或更改表、数据库或 SAP ASE 服务器的行锁升级阈值。

  • SAP ASE 服务器获取数据行锁定表上的行锁,直到锁数超过锁升级阈值为止。如果 SAP ASE 服务器成功获取了表锁,这些行锁将被释放。

  • 当表上的行锁数超过 HWM 时,SAP ASE 服务器将尝试升级到表锁。当表上的行锁数小于 LWM 时,SAP ASE 服务器不会尝试升级到表锁。当表上的行锁数在 HWM 和 LWM 之间,并且行锁数超过了 PCT 阈值(表中行数的百分比)时,SAP ASE 服务器将尝试升级到表锁。

  • 锁升级始终从一层升级到另一层,也就是说,行锁将升级到表锁。SAP ASE 服务器不会从行锁升级到页锁。

  • 表的锁升级阈值将覆盖数据库或全服务器范围的设置。数据库的锁升级阈值将覆盖全服务器范围的设置。

  • 若要更改数据库的锁升级阈值,必须使用 master 数据库。若要更改数据库中表的锁升级阈值,必须使用表所在的数据库。

  • 全服务器范围的行锁升级阈值也可以用 sp_configure 设置。使用 sp_setrowlockpromote 更改全服务器范围的值时,它将更改配置参数并保存配置文件。第一次安装 SAP ASE 时,由配置参数设置的全服务器范围行锁升级阈值为:

    参数 阈值
    row lock promotion HWM 200
    row lock promotion LWM 200
    row lock promotion PCT 100

  • 系统过程 sp_sysmon 报告有关行锁升级的信息。

  • 数据库级别的行锁升级阈值存储在 master..sysattributes 表中。如果转储数据库,然后将其装载到另一台服务器上,则必须在新服务器上设置行锁升级阈值。对象级别的行锁升级阈值存储在用户数据库的 sysattributes 表中,转储中包括这些阈值。