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

sp_setpglockpromote

语法


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

sp_setpglockpromote server, NULL, <new_lwm>, <new_hwm>, <new_pct> 

参数

server

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

"database" | "table"

指定是为数据库还是为表设置锁升级阈值。“database”和“table”是 Transact-SQL 关键字,因此需要使用引号。

<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

将全服务器范围的锁升级 LWM 设置为 200,将 HWM 设置为 300,将 PCT 设置为 50:


sp_setpglockpromote "server", NULL, 200, 300, 50

示例 2

为 master 数据库设置锁升级阈值:


sp_setpglockpromote "database", master, 1000, 1100, 45

示例 3

为 pubs2 数据库中的 titles 表设置锁升级阈值。必须从 pubs2 数据库中发出此命令:


sp_setpglockpromote "table", "pubs2..titles", 500, 700, 10

示例 4

将 master 数据库的 HWM 阈值更改为 1600。这些阈值以前是用 sp_setpglockpromote 设置的。必须从 master 数据库中发出此命令:


sp_setpglockpromote "database", master, @new_hwm=1600

用法

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

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

  • sp_setpglockpromote 用于为表、数据库或 SAP ASE 服务器配置锁升级值。

  • SAP ASE 服务器获取表上的页锁,直到锁数超过锁升级阈值为止。 sp_setpglockpromote 可以更改对象、数据库或服务器的锁升级阈值。如果 SAP ASE 服务器成功获取了表锁,这些页锁将被释放。

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

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

  • SAP ASE 服务器的锁升级阈值不需要初始化,但必须通过使用 sp_setpglockpromote 指定 LWM、HWM 和 PCT 来初始化数据库和表的锁升级阈值。第一次对数据库或表运行此存储过程时,它将在 sysattributes 中为该对象创建一行。阈值初始化之后,即可单独对各个值进行修改,如示例 4 中所示。

  • 对于表或数据库,sp_setpglockpromote 在一个事务中设置 LWM、HWM 和 PCT。如果 sp_setpglockpromote 在更新其中任何值时遇到错误,所有更改都将中止,并且事务将回退。对于全服务器范围的更改,可能会有一个或多个阈值更新失败,而其它阈值则更新成功。如果有任何值更新失败,SAP ASE 服务器将返回一条错误消息。

  • 若要查看全服务器范围的锁升级阈值设置,请使用 sp_configure "lock promotion" 来查看全部三个阈值。若要查看数据库的锁升级设置,请使用 sp_helpdb。若要查看表的锁升级设置,请使用 sp_help。