搜索引擎优化高级编程(数据库自动SQL优化就是使用技术,自动对SQL语句进行优化)

优采云 发布时间: 2022-03-26 20:05

  搜索引擎优化高级编程(数据库自动SQL优化就是使用技术,自动对SQL语句进行优化)

  文/闵翔

  SQL 语句的优化是将低性能的 SQL 语句转换为具有相同目的的高性能 SQL 语句。

  人工智能自动SQL优化是利用人工智能技术自动改写SQL语句,找到性能最佳的等效SQL语句。

  数据库性能优化

  数据库系统的生命周期可以分为三个阶段:设计、开发和成品。设计阶段的数据库性能优化成本最低,收益最大。成品阶段的数据库性能优化成本最高,收益最小。

  数据库的优化通常可以通过优化网络、硬件、操作系统、数据库参数和应用程序来进行。最常见的优化方法是升级硬件。据统计,通过优化网络、硬件、操作系统、数据库参数所获得的性能提升仅占数据库系统性能提升的40%左右,其余60%的系统性能提升来自于优化的应用程序。许多优化专家认为,优化应用程序可以将系统性能提高多达 80%。

  应用优化

  应用程序优化通常可以分为两个方面:源代码和SQL语句。由于涉及到程序逻辑的更改,源代码优化在时间成本和风险方面代价高昂,对数据库系统性能的提升有限。

  为什么要优化 SQL 语句

  . SQL语句是操作数据库的唯一方式,它对数据库系统的性能起着决定性的作用。

  . SQL 语句消耗 70% 到 90% 的数据库资源。

  . SQL 语句独立于编程逻辑,优化 SQL 语句不会影响程序逻辑。

  . SQL语句有不同的写法,性能上的差异非常大。

  . SQL 语句易于学习,但难以掌握。

  传统的优化 SQL 语句的方法是通过手动重写来优化 SQL 语句。DBA或高级程序员通过分析SQL语句的执行计划,依靠经验尝试重写SQL语句,然后比较结果和性能,试图找到性能更好的SQL语句。这种传统方法无法找到所有可能的 SQL 语句编写方式,并且依赖于人的经验,非常耗时。

  SQL优化技术发展史

  第一代 SQL 优化工具是执行计划分析工具。该类工具为输入的SQL语句从数据库中提取执行计划,并解释执行计划中关键字的含义。

  第二代SQL优化工具只能提供增加索引的建议。通过分析输入 SQL 语句的执行计划,生成是否​​增加索引的建议。

  第三代SQL优化工具不仅分析输入SQL语句的执行计划,还对输入SQL语句本身进行语法分析,分析后生成写作改进建议。

  AI自动SQL优化

  

  图1 人工智能自动SQL优化*敏*感*词*

  AI 自动 SQL 优化出现在 90 年代后期。目前在商业数据库领域,LECCO Technology Limited()拥有该技术,并提供LECCO SQL Expert,这是一款采用该技术的自动优化产品,支持Oracle、Sybase、MS SQL Server和IBM DB2数据库平台。本产品为数据库应用程序的开发和维护提供的模块包括:SQL语法优化器、PL/SQL集成开发调试环境(IDE)、扫描器、数据库监视器等。其核心模块SQL语法优化器作为如下:①输入源SQL语句;②“人工智能反馈搜索引擎”结合检测到的数据库结构和索引对输入的SQL语句进行重写,生成N条等。③将生成的N个等价SQL语句发送到“人工智能反馈搜索引擎”进行重写,直到无法生成新的输出或搜索限制已满;④过滤输出的SQL语句,选择Generate SQL statements with different execution plan;⑤ 对获取的 SQL 语句进行批量测试,找出性能最好的 SQL 语句。

  LECCO SQL Expert 自动优化示例

  假设我们从源码中提取这条SQL语句(也可以通过内置的scanner或者monitor获取该SQL语句):

  选择计数(*)

  来自员工

  swheresEXISTS (SELECT 'X'

  从部门

  swheresEMP_DEPT=DPT_ID

  AND DPT_NAME LIKE 'AC%')

  AND EMP_ID IN(选择 SAL_EMP_ID

  从 EMP_SAL_HIST B

  SAL_SALARY > 70000)

  按下“优化”按钮后,10秒后,SQL Expert完成优化过程,在这10秒内重写了2267条等效的SQL语句,其中136条SQL语句是不同的执行计划。

  接下来,我们可以对自动重写生成的136条SQL语句进行批量测试,选出性能最佳的等效SQL语句。按“批量运行”按钮,在“终止条件”页面选择“最佳运行时SQL语句”,按“确定”。

  经过几分钟的试运行,我们可以发现SQL124的运行时间和响应时间最短。运行速度快22.75倍左右(源SQL语句运行时间2.73秒,SQL124运行时间0.12秒)。现在我们可以把SQL124放到源码中,结束一条SQL语句的优化。

  “边做边学”提高SQL开发水平

  LECCO SQL Expert 不仅可以找到最佳 SQL 语句,还提供“边做边学”培训,教开发人员和数据库管理员如何编写性能最佳的 SQL 语句。LECCO SQL Expert 的“SQL Comparator”识别源 SQL 和候选 SQL 之间的差异。

  以上面优化的结果为例,为了看看源 SQL 语句和 SQL124 有什么区别,我们可以点击“比较器”按钮来比较 SQL124 和源 SQL 语句。“SQL 比较器”以蓝色显示 SQL124 相对于源 SQL 语句的差异。如果选中“双向比较”复选框,“SQL 比较器”可以用蓝色显示两条 SQL 语句之间的差异。当然,我们也可以从源语句和改写的SQL语句中选择任意两条进行比较。

  从对比结果可以看出,改写后的SQL124将第一个Exists改写为In;对字段DPT_ID进行合并空字符串的操作,诱导数据库先执行子查询。

  (选择 DPT_ID||''

  从部门

  WHERE DPT_NAME LIKE 'AC%')

  子查询完成后,将与 EMPLOYEE 表执行嵌套循环连接。

  如果您觉得书面上的变化难以理解,也可以点击“执行计划”复选框,通过比较两条 SQL 语句的执行计划来了解差异。在查看执行计划的过程中,如果有不明白的地方,可以点击“SQL信息按钮”,然后点击执行计划中不明白的地方。LECCO SQL Expert 的上下文相关帮助系统将提供执行计划的解释。.

  在“SQL比较器”中,勾选“统计”复选框后,可以得到两条SQL运行时的统计信息的详细对比,对于学习不同SQL编写方式对数据库资源的消耗非常有帮助.

  LECCO SQL专家优化模块特点

  LECCO SQL Expert优化模块的主要特点是:自动优化SQL语句;用专属的人工智能知识库“反馈搜索引擎”重写性能卓越的SQL语句;查找所有等效的 SQL 语句和可能的执行计划;保证产生相同的结果;高级 SQL 解析器处理最复杂的 SQL 语句;可以重写 SELECT、SELECT INTO、UPDATE、INSERT 和 DELETE 语句;通过测试运行自动为应用程序和数据库找到性能最好的 SQL 语句;提供微秒级计时,可以优化Web应用中的短时间SQL语句和大量用户的在线事务处理;为开发者提供“边做边学”的培训 快速提高开发人员的SQL编程技能;提供上下文相关的执行计划帮助系统和SQL健康帮助;不是猜测或建议,而是独特的 SQL 重写解决方案。

  编写专家 SQL 语句

  LECCO SQL Expert的出现让SQL的优化变得异常简单。只要能写出SQL语句,就能帮助用户找到性能最好的写法。LECCO SQL Expert不仅可以在很短的时间内找到所有可能的优化方案,而且可以通过实际测试确定最有效的优化方案。与以往的数据库优化方法相比,LECCO SQL Expert 将数据库优化技术提升到了一个新的技术水平。依赖人类经验、耗费大量时间、受人类思维约束的数据库优化方法已经高效、省时、准确。取而代之的是自动优化软件。借助内置的“LECCO Assistant”,

  【发表评论】【初学者的角落】【科技聊天】【】

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线