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

优采云 发布时间: 2021-12-02 17:18

  搜索引擎优化高级编程(数据库自动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语句本身进行语法分析,分析后在写作中提出改进建议。

  人工智能自动SQL优化

  

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

  人工智能自动 SQL 优化出现在 1990 年代后期。目前在商业数据库领域,LECCO Technology Limited()拥有该技术,并提供LECCO SQL Expert,一款使用该技术的自动优化产品,支持Oracle、Sybase、MS SQL Server和IBM DB2数据库平台。本产品在数据库应用开发维护阶段提供的模块包括:SQL语法优化器、PL/SQL集成开发调试环境(IDE)、扫描器、数据库*敏*感*词*等。 其核心模块SQL语法优化器的工作原理是:①输入源SQL语句;②“人工智能反馈搜索引擎”重写输入的SQL语句,结合检测到的数据库结构和索引,生成N等。有效的SQL语句输出;③将生成的N条等效SQL语句发送到“人工智能反馈搜索引擎”进行重写,直到不能产生新的输出或搜索限制已满;④对输出的SQL语句进行过滤和选择,生成不同执行计划的SQL语句;⑤对获取的SQL语句进行批量测试,找出性能最好的SQL语句。

  LECCO SQL Expert 自动优化示例

  假设我们从源代码中提取出这条SQL语句(该SQL语句也可以通过内置的扫描器或监视器获取):

  选择 COUNT(*)

  来自员工

  swheresEXISTS (SELECT'X'

  从部门

  swheresEMP_DEPT=DPT_ID

  AND DPT_NAME LIKE'AC%')

  AND EMP_ID IN (SELECT SAL_EMP_ID

  来自 EMP_SAL_HIST B

  swheresSAL_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 比较器”可以指示源 SQL 和要选择的 SQL 之间的差异。

  以上述优化的结果为例,为了看到源SQL语句与SQL124在书写上的差异,我们可以按下“比较器”按钮,将SQL124与源SQL语句进行比较。“SQL 比较器”以蓝色显示 SQL124 和源 SQL 语句之间的差异。如果选中“双向比较”复选框,“SQL 比较器”可以用蓝色表示两条 SQL 语句之间的差异。当然,我们也可以从源语句和重写后的SQL语句中选择两个进行比较。

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

  (SELECT DPT_ID||''

  从部门

  WHERE DPT_NAME LIKE'AC%')

  子查询完成后,对EMPLOYEE表进行嵌套循环联接(Nested Loop Join)。

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

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

  LECCO SQL Expert优化模块的特点

  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 助手”,即使是 SQL 初学者也可以快速轻松地编写专家级 SQL 语句。

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线