文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

如何调优 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方法允许在实际用户被引入新应用程序时对他们进行分析,并且允许在只影响迁移用户的情况下重新配置系统。这种方法会影响早期采用者,但限制了支持服务的负载。因此,计划外停机只影响一小部分用户。

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯