-----------------------------Cryking原创------------------------------
-----------------------转载请注明出处,谢谢!------------------------
并行处理能大大提高数据的处理速度,它依赖于硬件资源、网络资源等环境.
并行处理的硬件资源环境分为5大类:
1.传统的单台计算机、单处理器、单内核的机器.(无法进行并行处理,但是并行程序还是可以运行的,此时就和普通程序一样了)
2.单台计算机、单处理器、多内核的机器.(目前本人的测试环境,没钱买多处理器的)
3.单台计算机、多处理器、多内核的机器.
4.集群系统
5.分布式系统
PS:如何查看几个处理器、几核,常用的软件就是CPU-Z.
本人的测试机器CPU:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLi0zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwkzX39GZhh2csATMflHLwEzX4xSZz91ZsADMx8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL2EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3PnVGcq5SZhJzM0EWZwQzM3IWMkJmZhBjMiRmYzUWYhFDN0MjY58CXyAzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.jpeg)
单CPU,双核心处理器
下面开始,编写一个普通的管道函数(这里演示的就是管道函数的并行处理):
注意需要先建立类型EMP_element,如下:
CREATE OR REPLACE TYPE EMP_element as table of varchar2(100);
然后我们建立一个并行处理的管道函数:
留意下启用并行的关键字PARALLEL_ENABLE.
接下来我们构造大表进行测试,根据v$pq_sesstat视图的结果,我们来判断数据库系统是否真的进行了并行处理.
为了使示例更加有说服力,我们再来试一下普通管道函数+HINT强制并行看看:
由于普通函数不支持并行,所以即使+HINT强制并行,系统还是没有使用并行处理.耗时依然为40多秒.
如果不使用函数,使用普通的SQL,又是可以使用HINT强制并行的,如下:
通过上面的示例可以看到,并行处理可以大大加速数据的处理,几乎成倍的提升性能.
但并不是并行度为几,就会提示几倍的性能,它受硬件环境,优化器内部算法,PL/SQL引擎解析等等的约束.
总之,并行处理给我们带来的性能提升是很大的,所以在某些场景使用并行编程也是很必要的.