SQL – 数据库调优

SQL – 数据库调优


成为数据库专家或专家数据库管理员需要时间。这一切都源于在各种数据库设计方面的丰富经验和良好的培训。

但以下列表可能有助于初学者获得良好的数据库性能 –

  • 使用本教程中 RDBMS 概念章节中解释的 3BNF 数据库设计。

  • 避免数字到字符的转换,因为数字和字符的比较方式不同,会导致性能下降。

  • 使用 SELECT 语句时,只获取所需的任何信息,避免在 SELECT 查询中使用 *,因为它会不必要地加载系统。

  • 在您经常进行搜索操作的所有表上仔细创建索引。避免在搜索操作较少而插入和更新操作较多的表上建立索引。

  • 当 WHERE 子句中的列没有与之关联的索引时,就会发生全表扫描。您可以通过在用作 SQL 语句的 WHERE 子句中的条件的列上创建索引来避免全表扫描。

  • 对具有实数和日期/时间值的等式运算符要非常小心。这两者都可能有肉眼不明显的细微差异,但无法完全匹配,从而阻止您的查询返回行。

  • 明智地使用模式匹配。LIKE COL% 是有效的 WHERE 条件,将返回的集合减少到仅那些数据以字符串 COL 开头的记录。但是,COL%Y 不会进一步减少返回的结果集,因为无法有效评估 %Y。进行评估的工作量太大,无法考虑。在这种情况下,使用了 COL%,但丢弃了 %Y。出于同样的原因,前导通配符 %COL 可以有效地防止使用整个过滤器。

  • 微调您的 SQL 查询,检查查询(和子查询)的结构、SQL 语法,以发现您的表是否设计为支持快速数据操作并以最佳方式编写查询,从而使您的 DBMS 能够有效地操作数据.

  • 对于定期执行的查询,请尝试使用过程。过程是一组潜在的大型 SQL 语句。过程由数据库引擎编译然后执行。与 SQL 语句不同,数据库引擎在执行过程之前不需要对其进行优化。

  • 如果可能,请避免在查询中使用逻辑运算符 OR。OR 不可避免地会减慢几乎所有针对大表的查询速度。

  • 您可以通过删除索引来优化批量数据加载。想象一下有数千行的历史表。那个历史表也可能有一个或多个索引。当您想到索引时,您通常会想到更快的表访问,但在批量加载的情况下,您可以通过删除索引来受益。

  • 执行批处理事务时,在创建相当数量的记录后执行 COMMIT,而不是在每次创建记录后创建它们。

  • 计划定期对数据库进行碎片整理,即使这样做意味着制定每周例行程序。

内置调优工具

Oracle 有许多用于管理 SQL 语句性能的工具,但其中两个非常流行。这两个工具是 –

  • 解释计划– 工具识别执行 SQL 语句时将采用的访问路径。

  • tkprof – 通过在 SQL 语句处理的每个阶段所用的时间来衡量性能。

如果您只想测量 Oracle 中查询所用的时间,可以使用 SQL*Plus 命令 SET TIMING ON。

有关上述工具和数据库碎片整理的更多详细信息,请查看您的 RDBMS 文档。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁