更新时间:2024-06-20 GMT+08:00
单表点查询性能差
问题现象
单表查询的场景下,预期1s以内返回结果,实际执行耗时超过10s。
原因分析
行列存表选择错误导致的问题,点查询场景应该使用行存表+btree索引。
分析过程
- 通过抓取问题SQL的执行信息,发现大部分的耗时都在“CStore Scan”。
- 分析出问题的场景:基表是一张十亿级别的表,每晚有批量增量数据入库,同时会有少量的数据清洗的工作。白天会有高并发的查询操作,查询不涉及表关联,并且返回结果都不大。
处理方法
调整表定义,将表修改为行存表,同时建立btree索引,索引建立的原则:
- 在经常需要搜索查询的列上创建索引,可以加快搜索的速度。
- 不要定义冗余或重复的索引。
- 建立组合索引时候,要把过滤性比较好的列往前放。
- 为经常出现在关键字ORDER BY、GROUP BY、DISTINCT后面的字段建立索引。
- 在经常使用WHERE子句的列上创建索引,加快条件的判断速度。
父主题: 集群性能