更新时间:2024-03-06 GMT+08:00

基于开销的清理延迟

基于开销的清理延迟的目的是允许管理员减少VACUUM和ANALYZE语句在并发活动的数据库上的I/O影响。 例如,VACUUM和ANALYZE此类维护语句并不需要迅速完成, 且运行时要求此类语句不能严重干扰系统执行其他的数据库操作,管理员就可以使用该功能实现此目的。

有些清理操作会持有关键的锁,这些操作应该尽快结束并释放锁。所以GaussDB(DWS)的机制是,在这类操作过程中,基于开销的清理延迟不会发生作用。为了避免在这种情况下的长延时,实际的开销限制取下面两者之间的较大值:

  • vacuum_cost_delay*accumulated_balance/vacuum_cost_limit
  • vacuum_cost_delay*4

在ANALYZE | ANALYSE和VACUUM语句执行过程中,系统维护一个内部的记数器,跟踪所执行的各种I/O操作的近似开销。如果积累的开销达到了vacuum_cost_limit声明的限制,则执行这个操作的进程将睡眠vacuum_cost_delay指定的时间。然后它会重置记数器然后继续执行。

这个特性是缺省关闭的。要想打开它,把vacuum_cost_delay变量设置为一个非零值。

vacuum_cost_delay

参数说明:指定开销超过vacuum_cost_limit的值时进程将进入休眠的时间长度。

参数类型:USERSET

取值范围:整型,0~100,单位为毫秒(ms)。正数值表示打开基于开销的清理延迟特性;0表示关闭基于开销的清理延迟特性。

默认值:0

  • 许多系统上,休眠的有效分辨率是10毫秒。因此把vacuum_cost_delay设置为一个不是10的整数倍的数值与将它设置为10的整数倍作用相同。
  • 此参数一般设置较小,常见的设置是10或20毫秒。

vacuum_cost_limit

参数说明:导致清理进程休眠的开销限制。

参数类型:USERSET

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

默认值:200

vacuum_cost_page_hit

参数说明:清理一个在共享缓存里找到的缓冲区的预计开销。它表示锁住缓冲池、查找共享的Hash表、扫描页面内容的开销。

参数类型:USERSET

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

默认值:1

vacuum_cost_page_miss

参数说明:清理一个要从磁盘上读取的缓冲区的预计开销。它表示锁住缓冲池、查找共享Hash表、从磁盘读取需要的数据块并扫描其内容的开销。

参数类型:USERSET

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

默认值:2

vacuum_cost_page_dirty

参数说明:清理修改一个原先是干净的块的预计开销。它表示把一个脏的磁盘块再次刷新到磁盘所需的额外开销。

参数类型:USERSET

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

默认值:20