数据库查询优化引擎可以怎样实现查询优化---开篇

前言

数据库的优化体现在各个优化引擎上,一个数据库能否流行起来,也是取决于数据库本身的优化引擎的优劣。而优化也是分几个阶段,比如,第一个阶段是需求分析,这时候就是对数据库的选型,系统的选型做,应用的策略做判断,第二个阶段是基于选好优化器的基础上进行数据模型的设计,这个阶段会产生需求体现的表,字段,以及代码里面映射到的POJO,第三个阶段是开发过程中SQL脚本的优化处理,这里只是基于语法层面的优化,比如找到替代的性能更好的语法来替代现有的脚本,第四个阶段是压测阶段以及灰度测试的阶段优化,这个阶段通常会借助一些系统的分析工具,查看数据库设计的性能,比如Jprofile,分析虚拟机的执行的效率,消耗等等,第五个阶段,这时候就是上线的阶段测试,主要是通过日常的日志来分析,执行的消耗,以及判断系统是否需要扩展性能来支持用户的访问增长。

查询重用优化

这里的重用优化,体现在我们的JPA框架的缓存提供的支持,如果JPA的缓存不支持,就体现在数据库引擎的优化支持,通常这里是在分布式场景下,对数据有强一致性的要求的业务都不会使用这样优化策略,毕竟这里会出现大量的脏读的情况,比如,我们使用非常流行的mybatis的一级缓存一级二级缓存,就是针对减少数据库访问压力的提供的支持,具体可以查看之前写的关于mybatis的缓存的文章。而这里的数据库的重用优化就体现在提供一个缓存块来提供外界的访问。

查询重写优化

不是本节的重点内容,这里的优化的层面就更加的丰富,就简单的从实际应用最多的层面来说就是语法层面的等价替换提高查询性能。如果读者有兴趣了解其他层面的优化,建议从电子档的8页了解介绍。

查询算法优化

简单的介绍算法的类别,后续会详细的介绍到各个算法的应用层面,这里先做个简单的铺垫,常用的优化算法就是遗传算法,动态规划算法,这两种算法是PG底层使用到的最常用的算法,遗传算法大致意思是通过优胜劣汰的自然规律的引用含义,从最后优胜的查询优化的结果中获取最优的结果。而动态规划算法是把问题分割层N个不同层面的问题,然后从这N个问题集里面选出最好的最优的解,然后抛弃其他的解,最后归集到最后一个子问题,就是动态规划最后所需的解。除了这两种算法还有其他的算法,比如贪心算法等,这种算法的含义是从局部最优的解中选出作为结果提供给其他引用。

查询并行优化

不是本节重点内容,后续会详细的介绍,大致应用场景是分布式系统里面,如果出现多个微服务的相互依赖消费的情况,这时候的优化性能就是各个服务之间的 通信耗时,以及局部的优化。局部优化又分为IO优化以及CPU优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值