数据仓库服务 GAUSSDB(DWS)-HStore表使用优秀实践:HStore表的使用要求与建议
HStore表的使用要求与建议
- 参数设置
依赖后台常驻线程对HStore表进行MERGE清理操作,才能保证查询性能与压缩效率,使用HStore表务必设置相关GUC参数,推荐的参数值如下:
autovacuum_max_workers_hstore=3
autovacuum_max_workers=6
autovacuum=true
enable_col_index_vacuum=on
- 入库建议(推荐使用HStore_opt表)
HStore_opt表入库建议:
- update入库性能差,建议修改为upsert;
- delete入库,确定计划走索引扫描即可,用JDBC batch方式入库最佳;
- upsert入库,无并发冲突下开启enable_hstore_nonconflict_upsert_optimization,其他场景都关闭;enable_hstore_nonconflict_upsert_optimization即可,会自动选择最优路径;
- merge into入库只有在单次入库数据量超过100W/dn,且无并发数据保证无重复的情况下,建议使用。
- 点查建议(推荐使用HStore_opt表)
HStore_opt表点查建议:
- 在等值过滤条件使用最多且distinct值分布相对均匀的一个列上创建二级分区(distinct值的分布过于倾斜或者个数太少的列不要创建二级分区);
- 除了二级分区之外的等值过滤列,如果过滤条件涉及的列在查询中基本固定,使用cbtree索引,创建索引的列数不要超过5列;
- 除了二级分区之外的等值过滤列,如果过滤条件涉及的列在不同查询中变化,使用gin索引,创建索引的列数不要超过5列;
- 所有涉及等值过滤的字符串列,都可以建表时指定bitmap索引,不限列数,后续不可修改;
- 时间范围过滤的列,指定为分区列;
- 点查返回数据量超过10W/dn的场景,索引扫描很可能不如非索引扫描,建议使用guc参数enable_seqscan对比测试下性能,灵活选择。
- 索引相关
索引会占用额外的空间,同时带来的点查性能提升有限,所以HStore表只建议在需要做Upsert或者有点查(这里指唯一性与接近唯一的点查) 的诉求下创建一个主键或者btree索引。
- MERGE相关
由于HStore表依赖后台autovacuum来将操作MERGE到主表,所以入库速度不能超过MERGE速度,否则会导致delta表的膨胀,可以通过控制入库的并发来控制入库速度。同时由于Delta表本身的空间复用受oldestXmin的影响,如果有老事务存在可能会导致Delta空间复用不及时而产生膨胀。
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控
- GaussDB数据库的使用现状_GaussDB最大的优势_高斯数据库的使用现状
- 大数据应用范围有哪些_大数据技术与应用要学习什么课程