如何调优 Oracle SQL系列文章:SQL性能方法论

发布时间:2020-08-09 19:02:46 作者:jelephant
来源:ITPUB博客 阅读:150

如何调优 Oracle SQL系列文章:SQL性能方法论

如何调优 Oracle SQL系列文章 第二篇: SQL性能方法论。

2 SQL性能方法论

2.1 应用程序设计指南

获得良好SQL性能的关键是在设计应用程序时考虑性能。

2.1.1 数据建模指南

数据建模对于成功的应用程序设计非常重要。

你必须以根据实际的业务需求进行数据建模。在这个过程中,对于什么样的模型是正确的数据模型可能会出现不同的争议。重要的是将最大的建模工作应用于受最频繁的业务事务影响的实体。

在建模阶段,很有可能花费太多时间来建模非核心数据元素,这会导致开发前置时间的增加。使用建模工具可以快速生成模式定义,并且在需要快速原型时非常有用。

2.1.2 编写有效的应用指南

在系统开发的设计和架构阶段,确保应用程序开发人员了解SQL执行效率。
为实现此目标,开发环境必须支持以下特征:

因为解析应该尽可能地最小化,所以应用程序开发人员应该设计他们的应用程序来解析一次SQL语句并多次执行它们。这是通过游标完成的。经验丰富的SQL程序员应该熟悉打开和重新执行游标的概念。

应用程序开发人员还必须确保在共享池中所共享SQL语句。为了实现这一目标,使用绑定变量来改造查询。如果不这样做,则SQL语句可能会被解析一次,并且永远不会被其他用户重用。要确保共享SQL,不要将字符串文字与SQL语句一起使用。例如:

带字符串文字的语句:

SELECT
 * 
FROM
 employees 
WHERE
 last_name 
LIKE 'KING';

绑定变量的语句:

SELECT
 * 
FROM
 employees 
WHERE
 last_name 
LIKE :1;

下面的例子展示了一个简单的OLTP应用程序的一些测试结果:

测试 支持用户数
不解析所有语句 270
软解析所有语句 150
硬解析所有语句 60
为每个事务重新连接 30

这些测试是在4颗CPU计算机上进行的。随着系统上CPU数量的增加,差异也会增加。

2.2 部署应用程序指南

要实现最佳性能,部署应用程序时要像设计应用程序时一样精心。

2.2.1 在测试环境中部署指南

测试过程主要包括功能测试和稳定性测试。在这个过程的某个时候,您必须执行性能测试。

以下列表描述了对应用程序进行性能测试的简单规则。如果记录正确,则此列表在应用程序上线后为生产应用程序和容量规划过程提供重要信息。

所有测试必须使用完全填充的表完成。测试数据库应包含代表生产系统的数据,包括表之间的数据量和基数。应构建所有生产索引,并正确填充模式统计信息。

使用您计划在生产中使用的优化程序模式执行所有测试。

在空闲或轻度使用的数据库上测试单个用户以获得可接受的性能。如果单个用户在理想条件下无法达到可接受的性能,则多个用户在实际条件下无法实现可接受的性能。

获取每个SQL语句的执行计划。使用此过程验证优化器是否获得了最佳执行计划,并且可以根据CPU时间和物理I/O来理解SQL语句的相对成本。此过程有助于识别将来最需要调优和性能工作的大量事务。

此过程难以准确执行,因为用户工作负载和配置文件可能无法完全量化。但是,应测试执行DML语句的事务以确保不存在锁定冲突或序列化问题。

使用尽可能靠近生产系统的配置进行测试。使用真实的系统对于网络延迟,I/O子系统带宽以及处理器类型和速度尤为重要。如果不使用此方法,可能会导致对潜在性能问题的错误分析。

在基准测试时,对稳态条件下的性能进行测量是非常重要的。每个基准测试运行都应该有一个上升阶段,在这个阶段,用户连接到应用程序,并逐渐开始对应用程序执行工作。这个过程允许将频繁缓存的数据初始化到缓存中,并在稳态条件之前完成单个执行操作(例如解析)。同样,在基准测试运行之后,有一段下降期也是有用的,这样系统就可以释放资源,用户就可以停止工作并断开连接。

2.2.2 应用程序部署指南

当新应用程序推出时,通常采用两种策略:Big Bang方法(即所有用户同时迁移到新系统)和Trickle方法(即用户缓慢地从现有系统迁移到新系统)。

这两种方法都有优点和缺点。 Big Bang方法依赖于以所需规模对应用程序进行可靠测试,但具有最小化数据转换和与旧系统同步的优势,因为它只是被关闭。 Trickle方法允许在工作负载增加时调试可伸缩性问题,但可能意味着必须在转换发生时将数据迁移到遗留系统和从遗留系统迁移。

很难推荐一种方法,而不选另一种方法,因为每种技术都存在相关风险,可能会在转换发生时导致系统中断。当然,Trickle方法允许在实际用户被引入新应用程序时对他们进行分析,并且允许在只影响迁移用户的情况下重新配置系统。这种方法会影响早期采用者,但限制了支持服务的负载。因此,计划外停机只影响一小部分用户。

关于如何推出新应用程序的决定是针对每个业务的。任何采用的方法都有其独特的压力和应力。您从测试过程中获得的测试和知识越多,就越能认识到什么时机最适合推出新应用。

推荐阅读:
  1. oracle sql 调优
  2. 通过案例学调优之--SQL Profile

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle 文章 系列

上一篇:【Mongo】mongo配置文件

下一篇:5G连通性的未来:20个可能被颠覆的行业

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》