数据仓库服务 GAUSSDB(DWS)-创建和管理表:管理UNLOGGED表

时间:2024-09-12 17:04:57

管理UN LOG GED表

UNLOGGED表即非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是非日志表在冲突、执行操作系统重启、强制重启、切断电源操作或异常关机后会被自动清理,会造成数据丢失的风险。非日志表中的内容也不会被复制到备服务器中。在非日志表中创建的索引也不会被自动记录。

使用场景:非日志表不能保证数据的安全性,需要在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。在创建非日志表时应将cnretry关闭(即设置GUC参数max_query_retry_times=0)。

故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。

  • 9.1.0版本后,UNLOGGED表默认存储在pg_unlogged表空间下,且不可迁移或指定到其他表空间。
  • 从低版本升级到9.1.0版本后,旧版本创建的UNLOGGED表还存储在原表空间下。

9.1.0版本提供UNLOGGED表迁移脚本switch_unlogged_tablepace.py,配合GUC参数enable_unlogged_tablespace_compat,可以优化RTO。

  1. 脚本位于/opt/huawei/wisequery/script目录,可以通过-?获取帮助信息。

  2. 迁移所有UNLOGGED表(建议)
    1
    python3 switch_unlogged_tablepace.py -t switch
    

3. 迁移成功后,GUC参数enable_unlogged_tablespace_compat会自动设置为off。

建议在升级到9.1.0版本后通过以下两步操作提升实例重启RTO:

  1. 使用switch_unlogged_tablespace.py脚本将UNLOGGED表全部迁移到pg_unlogged表空间。
  2. 如果旧版本没有使用UNLOGGED表,建议将GUC参数enable_unlogged_tablespace_compat设置为OFF。
support.huaweicloud.com/devg-910-dws/dws_04_0028.html