数据仓库服务 GAUSSDB(DWS)-降低IO的处理方案:场景4:无索引、有索引不走
场景4:无索引、有索引不走
某一次点查询,Seq Scan扫描需要3767ms,因涉及从4096000条数据中获取8240条数据,符合索引扫描的场景(海量数据中寻找少量数据),在对过滤条件列增加索引后,计划依然是Seq Scan而没有走Index Scan。
对目标表ANALYZE后,计划能够自动选择索引,性能从3s+优化到2ms+,极大降低IO消耗。
常见场景:行存大表的查询场景,从大量数据中访问极少数据,没走索引扫描而是走顺序扫描,导致IO效率低,不走索引常见有两种情况:
- 过滤条件列上没建索引。
- 有索引但是计划没选索引扫描。
触发因素:
- 常用过滤条件列没有建索引。
- 表中数据因执行DML操作后产生数据变化未及时ANALYZE,导致优化器无法选择索引扫描计划,ANALYZE介绍参见ANALYZE。
处理方式:
- 对行存表常用过滤列增加索引,索引基本设计原则:
- 索引列选择distinct值多,且常用于过滤条件,过滤条件多时可以考虑建组合索引,组合索引中distinct值多的列排在前面,索引个数不宜超过3个。
- 大量数据带索引导入会产生大量IO,如果该表涉及大量数据导入,需严格控制索引个数,建议导入前先将索引删除,导入完成后再重新建索引。
- 对频繁做DML操作的表,业务中加入及时ANALYZE,主要场景:
- 表数据从无到有。
- 表频繁进行INSERT/UPDATE/DELETE。
- 表数据即插即用,需要立即访问且只访问刚插入的数据。
- GaussDB索引_GaussDB数据库索引_高斯数据库索引_华为云
- GaussDB索引_华为数据库GaussDB_高斯数据库索引_华为云
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- 云数据库Gaussdb数据库索引_华为gaussdb__gaussdb 数据库
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- Gauss(DWS)数据加解密_数据加解密算法_数据加解密函数
- GaussDB发展_gaussdb数据库_高斯数据库发展_华为云
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具