问题1:我现在基于Hologres引擎搭建了一套自动化数据分析平台,其中sql是自动生成的,当sql较复杂时,执行会比较慢,有大佬可以指导一下吗? 问题2:这个问题很大呀。。
方法论上一般就是先通过query log找到慢的sql https://help.aliyun.com/document_detail/216963.html?spm=a2c4g.183398.0.i2
然后根据query log里展示的plan和调优文档去对比,看是不是符合调优文档的某些bad case https://help.aliyun.com/document_detail/183398.html?spm=a2c4g.162563.0.0.5bc63f68R5OGsR这个问题是有点大,主要原因在于我的sql是自动生成的,无法按照具体物理表的情况取调优所以找慢sql和单独表的调优对我不是太适用,是想看看有没有标准的优化方案,sql/user分级是怎么做的,这块不太了解,sql之间相互干扰这个暂时不存在,因为并发还比较少,主要是单sql的优化,我现在单独运行一个复杂sql需要花费1.5秒左右,能优化到500ms是最好的
回答1:有个文档,可以参考看看: https://help.aliyun.com/document_detail/183398.html?spm=a2c4g.461881.0.0.79926a8f05san2 还有就是把explain analyze <最关键的慢sql>; 的结果发出来看看。 回答2:优化有修改物理表的属性,也有修改sql。
你可以看看是不是靠前者就能提升性能。可以针对下sql/user进行分级? 控制下影响面? 比如两实例, 一个是识别过比较稳定的sql, 一个是跑未知的。 我理解你提到的事情可能包含两部分: 1. 降低sql之间相互干扰 2. 真正慢sql优化。 如果想要降低sql之间干扰,可以考虑: 将比较复杂sql(简单点判断下长度超过阈值)或按user路由到一个独立的实例(只读实例), 减少user与user之前的干扰, 以及bad sql影响正常的sql? 优化sql层面, 比较通用是扩大资源, 其它可以请教下 @上唐 看看有没有什么好的想法。 ,此回答整理自钉群“实时数仓Hologres交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。