文档首页 > > 开发指南> 配置GUC参数> 锁管理参数

锁管理参数

分享
更新时间: 2019/11/12 GMT+08:00

DWS中,并发执行的事务由于竞争资源会导致死锁。本节介绍的参数主要管理事务锁的机制。

deadlock_timeout

参数说明:设置死锁超时检测时间,以毫秒为单位。当申请的锁超过设定值时,系统会检查是否产生了死锁。

  • 死锁的检查代价是比较高的,服务器不会在每次等待锁的时候都运行这个过程。在系统运行过程中死锁是不经常出现的,因此在检查死锁前只需等待一个相对较短的时间。增加这个值就减少了无用的死锁检查浪费的时间,但是会减慢真正的死锁错误报告的速度。在一个负载过重的服务器上,用户可能需要增大它。这个值的设置应该超过事务持续时间,这样就可以减少在锁释放之前就开始死锁检查的问题。
  • 设置log_lock_waits时,这个选项也决定了在一个日志消息发出关于锁等待以前要等待的时间。当需要调查锁延迟时,请设置比正常deadlock_timeout更小的值。

该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:整型,1~2147483647,单位为毫秒(ms)。

默认值:1s

lockwait_timeout

参数说明:控制单个锁的最长等待时间。当申请的锁等待时间超过设定值时,系统会报错。

该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:整型,0 ~ INT_MAX,单位为毫秒(ms)。

默认值:20min

update_lockwait_timeout

参数说明:允许并发更新参数开启情况下,该参数控制并发更新同一行时单个锁的最长等待时间。当申请的锁等待时间超过设定值时,系统会报错。

该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:整型,0 ~ INT_MAX,单位为毫秒(ms)。

默认值:2min

partition_lock_upgrade_timeout

参数说明:分区上的锁级别由允许读的ExclusiveLock升级到读写阻塞的AccessExclusiveLock时,会进行尝试性的锁升级,partition_lock_upgrade_timeout指示了尝试锁升级的超时时间。

  • 在分区表上进行MERGE PARTITION和CLUSTER PARTITION操作时,都利用了临时表进行数据重排和文件交换,为了最大程度提高分区上的操作并发度,在数据重排阶段给相关分区加锁ExclusiveLock,在文件交换阶段加锁AccessExclusiveLock。
  • 常规加锁方式是等待加锁,直到加锁成功,或者等待时间超过lockwait_timeout发生超时失败。
  • 在分区表上进行MERGE PARTITION或CLUSTER PARTITION操作时,进入文件交换阶段需要申请加锁AccessExclusiveLock,加锁方式是尝试性加锁,加锁成功了则立即返回,不成功则等待50ms后继续下次尝试,加锁超时时间使用会话级设置参数partition_lock_upgrade_timeout。
  • 特殊值:若partition_lock_upgrade_timeout取值-1,表示无限等待,即不停的尝试锁升级,直到加锁成功。

    该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:整型,最小值-1,最大值3000,单位为秒(s)。

默认值:1800

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区