
优化并行执行:Oracle中的串行点与性能问题
303KB |
更新于2024-08-27
| 116 浏览量 | 举报
收藏
在陈焕生的深入讲解中,他讨论了Oracle的并行执行在现实世界中的挑战与优化。首先,他指出并行操作的有效性往往取决于正确的使用方法,不当使用可能导致并行操作无法充分利用硬件的多核优势,或者执行计划效率低下,未能达到预期的性能提升。以下是几个具体的例子:
1. **rownum的影响**:在SQL查询中使用rownum会导致PXSEND1SLAVE操作,这是因为在为每行分配唯一的rownum值时,数据需要被分发到一个主进程(PX)。这会触发BUFFERSORT等阻塞操作,使得原本可以并行的扫描变得串行化,严重影响执行效率。例如,创建一个表lineorder_skew时,不使用rownum的操作执行速度快,而使用rownum则显著增加执行时间和dbtime。
2. **自定义PL/SQL函数**:如果函数未声明为parallel_enable,即使在并行环境下执行,该函数也会阻止SQL的并行处理。这意味着任何包含这种函数的查询将失去并行优势。
3. **并行DML**:启用并行DML(enable paralleldml)对于支持分布式更新至关重要。如果没有开启,DML操作将不会并行进行,从而限制了数据库的性能提升。
在“数据倾斜对不同分发方式的影响”部分,作者通过对比两种修改数据的方式——基于lo_custkey列或rownum列,展示了数据分布不均(如90%数据为-1)如何影响执行计划。不使用rownum时,执行计划更有效,因为每个PX进程仅负责扫描和统计,无需额外处理rownum的分配。然而,当rownum被引入时,执行计划中出现了额外的PXSEND1SLAVE和BUFFERSORT操作,导致了明显的性能下降。
总结来说,理解并正确运用Oracle的并行执行特性,避免不必要的串行点和阻塞操作,是提高数据库性能的关键。通过实例分析,陈焕生强调了优化SQL语句和函数使用的重要性,以及如何通过调整参数和策略来最大化并行执行的优势。
相关推荐










weixin_38724370
- 粉丝: 5
最新资源
- 在Eclipse中实现QQ设置界面的设计与开发
- asp.net+Oracle测量公司OA系统解决方案及文件备份分析
- 21点游戏:AI技术实现轻松学编程
- LPC2378 UART实例程序:实用入门教程
- Tomcat Plugin 3.2.1:Eclipse开发利器
- Mapinfo与VB结合实现最短路径算法开发
- DeviceTree V2.10:查看设备与驱动对象小工具
- 大学生毕业设计:图书管理系统论文
- RadASM 2.214版本发布,官方下载指南
- ADO技术在数据库连接中的应用与优势解析
- 高校汇编语言教学课件:全面而实用
- 北大青鸟北极星博客:信息技术领域的洞察与教育
- C++实现日期自增及平闰年判断技巧
- C++ primer plus第五版课后编程练习答案解析
- 全新Win32API全集下载,无需MSDN
- 深入解析VC环境下的Socket网络通信技术
- Java实现简易工人工资管理系统源码
- Symbian新手必读:Huwell学习日记PDF版
- 免费下载国际程序大赛冠军作品源码
- 实现Mac Dock鱼眼菜单效果的CSS技术指南
- 掌握Flash与ASP.NET在线拍照技术
- 构建大学生活动中心网站:ASP与Access的应用
- NetMeeting SDK 3.01 SP2:开发与资源包综合介绍
- 图书管理系统开发与Flash相册制作教程