很幸运有机会参加8小时玩转openGauss训练营活动,这次活动讲解内容从概述到基本功能使用,再到优化、高可用、灾备等等;说实话,如果没有数据库基础,没有一点点工作经验的话,别说玩转了,也别说8小时了,给8天也不一定搞得懂。课堂时间短而枯燥,对于小白来说,如听天书,所以,课下又自己找了些资料区反复观看。
对于开发来说,比较关注SQL查询优化这部分内容,感觉逻辑和之前Oracle数据库中学习的基本差不多,所以拿出来记录总结一下。
从课件中可以看出,应用提交SQL之后:
首先,openGauss会解析SQL的语法、语义、权限等等;
然后,对SQL进行逻辑优化改写操作;
再然后,进行物理优化阶段,即通过优化器进行成本估算,选择合适的执行计划;
最后,根据执行计划执行SQL,并返回给客户端结果。
在上述步骤中最关键的便是选择执行计划了,与Oracle一样,首先去查找数据库中与该SQL相关的对象的统计信息,根据统计来估算选择什么样的表连接方式,什么样的表访问方式等等;最后输出一个合理的执行计划;如E-ROWS , COST 等等指标都是执行计划输出的关键内容,也是开发人员分析判断和优化SQL时的重要依据。那么,在数据库中的统计信息的正确性必然是SQL优化的关键咯。
对于初学者,或者初级开发人员,可能只关注我写的SQL有没有实现业务想要查询的数据,并不关注SQL的执行效率,所以也没有SQL优化的这个概念。在此写出来,希望自己也希望各位正在成长的小白or初级开发人员or其他相关人员,在学习过程中,能够逐渐深入,知其然,知其所以然。