搜索引擎优化高级编程(数据库自动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 语句。
【发表评论】【初学者的角】【技术聊天】【】