SQL 数据库调优

SQL 数据库调优

成为数据库专家或专业的数据库管理员需要时间。这些都需要大量的经验和良好的培训。

以下列表可能对初学者有帮助,以获得良好的数据库性能:

  • 在关系数据库管理系统概念章节中,使用解释的3BNF数据库设计。

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

  • 在使用SELECT语句时,仅检索所需的信息,并避免在SELECT查询中使用*,因为它会不必要地加载系统。

  • 在具有频繁搜索操作的所有表上谨慎创建索引。避免对具有较少搜索操作和更多插入和更新操作的表创建索引。

  • 当WHERE子句中的列没有与之关联索引时,将进行完整表扫描。您可以通过在SQL语句的WHERE子句中作为条件的列上创建索引来避免完整表扫描。

  • 对于实数和日期/时间值,要非常小心使用等号运算符。这两者都可能有微小的差异,对于人眼来说并不明显,但会导致无法精确匹配,从而导致查询永远不返回行。

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

  • 通过检查查询(和子查询)的结构、SQL语法来微调您的SQL查询,以确定是否设计了能够支持快速数据操作的表,并以最佳方式编写了查询,从而使数据库管理系统能够高效地操作数据。

  • 对于定期执行的查询,尽量使用存储过程。存储过程是一组可能很大的SQL语句。存储过程由数据库引擎编译,然后执行。与SQL语句不同,在执行存储过程之前,数据库引擎不需要对其进行优化。

  • 尽量避免在查询中使用逻辑运算符OR。OR几乎会减慢对大型表的任何查询。

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

  • 在执行批量事务时,在每次记录创建之后创建COMMIT,而不是在每次记录创建之前创建。

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

内置调优工具

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

  • 解释计划 − 这个工具可以在执行SQL语句时识别将被采取的访问路径。

  • tkprof − 这个工具通过记录每个阶段的SQL语句处理时间来衡量性能。

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程