随着 Apache Doris 在越来越多的企业中得到落地和应用,越来越多用户开始关注如何在海量数据下对Doris的查询性能进行优化。有哪些性能优化的小技巧?如何降低查询耗时?数据模型和分区分桶策略该如何设计?针对慢查询该如何进行分析及优化?
OSCHINA 本期高手问答 1月18日-1月24日,我们邀请到来自百度的资深研发工程师、Apache Doris PPMC @缪翎老师 @ApacheDoris ,与大家一起探讨 Apache Doris 性能优化实战技巧。可讨论的问题包括但不限于:
- 慢查询定位、Profile 解读及SQL优化;
- 数据模型、索引及分区分桶策略设计;
- 物化视图及Rollup使用技巧;
- Doris查询优化器解读;
如有其他相关的问题,也欢迎提问。
嘉宾介绍
缪翎,百度资深研发工程师、Apache Doris PPMC,专注于 Apache Doris 查询引擎的设计和研发,在数据库查询引擎、查询优化器方向有丰富的研究和实践经验。
为了鼓励大家踊跃提问,Apache Doris 社区将会在问答结束后从提问者抽取5位幸运用户赠予Apache Doris 社区周边礼物。
OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。
下面欢迎大家就相关问题向 @缪翎老师 老师提问,直接回帖提问即可。
高手问答第 275 期 —— 聊聊 Apache Doris 的性能优化实战技巧
@肥皂泡2 @pyboy58 @DK8 @Li_Peng @osc_803xfq08
@Ling缪 你好!请教一个具体场景的问题,在Doris中,如果表按天分区,每天大约2000~3000万数据量,通常按照业务字段查询最近30天的明细信息。如何设计能支持更多的并发查询呢?
@Ling缪 1. 开源 Doris 和clickhouse之间的优势和劣势是什么?
2. Doris 在多线程设计上,有没有使用什么设计模式?
3. Doris 入门门槛高吗?超过多大的数据量比较合适使用doris?
哪些场景下特别适合doris数据库的发挥优势 ? 哪些场景下doris的性能不好?
@Ling缪 你好,我们doris集群 不定期的出现某个be节点直接挂掉的情况。查看监控看机器load比较高(主要是磁盘io write高)怎么排查这个问题,怎么知道这台机器上在做什么,有什么命令可以知道。
关键是每次挂掉的be节点 还不一样。。。
@Ling缪 您好,有几个问题想请教一下:
1:在做100-200个相同sql并发测试时,总是越往后面的查询,尤其是做group by的时候,看profile,越慢,好像哪里卡住了似的,这个应该怎么定位是哪里的问题?
2: 在做broker导入数据时,也总偶然碰到查询超时,而且这个问题是必现,我怎么定位问题,还请给点指点。
@Ling缪 请教下 doris 6个be 聚合模型下 用天date做时间分区 每天数据近2亿行 发现select max(date) 性能很差 接近10秒 看了下执行计划 发现全表扫描了 这样设计的主要考虑是什么呢
建议对于分区字段或者索引字段 比较常用 能否增加一些元信息 优化查询这些列的查询性能
@Ling缪 老师你好,想问一下,关于性能优化这方面,与数据类型是否有什么关联,各种数据源中的表联合查询的时候,对于复杂类型的性能优化是从哪方面着手的?
@Ling缪 您好 请教下 对于聚合模型,MODIFY COLUMN 某一个已经存在的列, 从类型 BIGINT 变更为 VARCHAR, 该表按每天分区,每天数据量1亿+,发现该表这一列历史数据过多,一直处于SCHEMA_CHANGE【 state is not NORMAL】 状态 (大概5小时),导致后续其他的增加列,增加动态分区都不断失败重试,直到表恢复NORMAL状态才成功
请教下 对于这种情况 有什么建议吗
@Ling缪 老师如何看待apache越来越多的使用java组件?而java组件的暴lei越来越频繁?
@Ling缪 越来越多的企业使用Doris,但是使用过程中也越多一些bug,甚至说遇到的很频繁,对于doris的编码质量,后续有没有策略或者计划,提升产品质量。