holo数仓 静默修数据大法之屏蔽binlog(超好用)
背景
当holo的表生产的binlog会关联下游业务的时候,想要静默修数据的时候(比如加字段时填充值,下游业务又不关心这个字段的时候),binlog会产生非常多的冗余数据,下游无法及时消费,影响正常业务
解决思路
holo数仓是基于pg协议进行开发的一款大数据数仓,支持session级别的屏蔽binlog操作,这样就可以避免下游无关操作堆积binlog影响数据及时性
关闭表DML过程中的Binlog
通过如下GUC可以使某个表在DML过程中不产生Binlog。Session级别开启,需添加在DML前一起执行
--session级别开启
SET hg_experimental_generate_binlog=off;
使用实例(含binlog校验)
- 查看现有binlog占的存储空间
SELECT hologres.hg_relation_size('action_log.user_login_log','binlog') ;
得到结果 (demo操作前)
hg_relation_size |
---|
23599781 |
- 进行更新操作
--session级别开启
SET hg_experimental_generate_binlog=off;
UPDATE action_log.user_login_log SET field1 = field2 WHERE field1 IS NULL
- 校验binlog是否有变化
得到结果 (demo操作后)
hg_relation_size |
---|
23599781 |
可见更新操作后,binlog无增加,至此完美解决。