如何深入揭露DBbrain智能优化引擎
发布时间:2022-01-13 14:23:25 所属栏目:MySql教程 来源:互联网
导读:今天就跟大家聊聊有关如何深入揭秘DBbrain智能优化引擎,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 DBbrain的SQL优化原理和实现。 前言 在之前的几期诊断日的分享中,分别介绍了如何使用D
今天就跟大家聊聊有关如何深入揭秘DBbrain智能优化引擎,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 DBbrain的SQL优化原理和实现。 前言 在之前的几期诊断日的分享中,分别介绍了如何使用DBbrain自助处理数据库主从复制延迟、CPU使用率过高、字符集不匹配的场景。本期的将为大家分享DBbrain的SQL优化原理和实现。主要看点如下: 1.深入揭秘DBbrain智能优化引擎架构及原理 2.DBbrain推出业内首个SQL优化效果对比功能 为了便于大家理解DBbrain的SQL优化功能的使用场景和设计背景,先简单聊一聊SQL性能较差与数据库性能联系——我们通常把性能较差的SQL称之为慢SQL,一般我们可通过设置slow_query_log参数设置为ON,来捕获执行时间超过一定数值(由long_query_time参数控制)的SQL语句。表现上来理解就是执行时间过长的SQL,但广义上消耗资源过多、执行计划不够优秀的SQL同样具有影响数据库性能的潜在隐患,可能只是因为资源足够空闲(紧急升配往往能够临时掩盖性能问题)或者数据量不够大,所以这几类SQL的执行时间并没有太长,但在特定场景下却会放大其对数据库性能的影响。而一般80%的数据库性能问题都是由于SQL性能所导致的,所以如何进行SQL的优化、SQL优化的效果就成为了数据库性能提升的关键因素。那么接下来就为大家揭秘,DBbrain的智能优化引擎是如何进行SQL优化的。 DBbrain的SQL优化引擎独立于数据库,避免对原生数据库引擎进行侵入。它的主要组件包括SQL解析和校验、基于规则的SQL重写、查询条件选择度/代价估算、SQL子句检查以及建议生成器。除此之外,Connector组件负责与目标数据库交互,同步SQL优化所需配置和表结构定义相关信息以及SQL代价估算。 1.SQL解析和校验 负责解析输入SQL语句,将提取涉及到的库表交给Connector组件获取表定义,并校验相关字段名、类型以及字符集(出于性能考虑,DBbrain不支持MyISAM表以及视图)。 2.SQL重写 数据库优化器都具有重写组件。它一般在选择索引,生成执行计划之前,通过对原SQL语句进行无语义差别的变换,使得SQL语句更加简洁,方便后续组件更好的选择执行计划。执行计划选择是在当前给定条件下尽力选择最佳执行路径,而SQL重写、增加合适的索引则是为执行计划选择创造更好物理条件。数据库自身具有一定重写功能,因此SQL优化建议也需要识别这些规则,并通过变换将查询条件和实际库表进行关联。下面举个例子来说明一下SQL 重写的原理:SQL在数据库中的执行路径往往和开发人员在写的结构不太相同,比如开发人员看到的如下SQL语句: DBbrain的SQL优化功目的就是帮助数据库寻找最佳执行路径,将其执行路径优化成更为简洁和高效的视图。从SQL解析上看,查询条件字段"value"是和a关联,但a仅仅是子查询的别名。从无语义差别的角度,该查询条件是可以下推到子查询,和库表dbbrain_1直接关联。 但是数据库自身重写功能通常具有片面性,实现并不完善。在某些特定场景下,显示的更改SQL语句,可以大幅度提高执行性能。比如:条件下推聚合子查询,exists变换为join,条件合并等。实现SQL变化的最大前提条件是无语义差别的,保证查询结果正确。这些变化是基于预先设定好的规则。 (编辑:随州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |