Oracle并行操作——浅议使用并行的时机

2024-04-02 08:18

本文主要是介绍Oracle并行操作——浅议使用并行的时机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相对于我们经常使用的Oracle优化技术,并行操作是一种很特殊的选择。恰当合理、有选择的对一些SQL语句进行并行化处理,可以有针对性的提升系统一些关键业务场景的执行效率。但是,另一方面,如果使用并行过多过滥,甚至处处并行,那么可能引起服务器整体过载的现象。

 

那么,我们如何判断此时应该进行并行化处理?如何得知哪个时候可以使用并行呢?

 

1、影响并行因素分析

 

并行技术是一种软硬件综合技术。硬件方面的基础就是多CPU系统的普及和广泛应用,多磁盘IO负载分割。硬件方面的提升为并行技术的实现提供了物质上的基础,多个CPU可以真正的同时完成任务。软件方面的并行基础就是并行算法研究的成熟,一个任务如何分解,分解子任务如何进行沟通、合并等等。软件方面重新实现了一套算法体系,支持了系统并行计算的实现。

 

 

那么,我们的并行操作决策受到哪些因素作用和影响呢?

 

 

ü        服务器CPU个数和运算能力

 

相对于如索引、聚簇表等逻辑优化手段,并行操作是一种硬件条件强依赖的优化手段。其中,CPU的个数是并行操作效果的决定因素。如果数据库服务器拥有多个CPU,那么采用并行操作的效果就会更好。反之,如果服务器只有一块CPU,设置的SQL又要求一个很高的并行度指标,那么并行进程之间争用CPU的现象会很多,反而影响到并行整体性能。

 

 

作为企业级应用,部署的数据库服务器硬件条件应该是有一定水准的。随着多核CPU和多CPU服务器的普及,并行操作的硬件条件会慢慢不再成为瓶颈所在。

 

 

ü        数据存储的分散性

 

通常情况下,Oracle服务进程Server Process获取一个数据块,首先是从高速缓存Buffer Cache中尝试获取对应的块。当没能寻找到数据块时,就直接从磁盘上将数据块获取到Buffer Cache中,之后再进行写入等操作。

 

但是,并行操作的方式却有所不同。并行操作是多个Process进程在访问相同的一批数据,如果全部按照Buffer Cache,后磁盘的顺序进行操作,很容易造成数据块争用和等待。所以,通常的并行操作都是直接针对磁盘上的数据文件进行读写。那么,如果我们的数据分散度较好,就可以很大程度上避免争用现象。

 

 

另一方面,数据库存储结构越来越独立化。专门的磁盘阵列机的出现,使得数据库IO能力提高。将数据文件分散在多个磁盘上,进行分散的IO操作和CPU运行操作,是一个发展方向。

 

 

ü        特定SQL考虑使用并行

 

并行操作通常不是我们的本能选择,也不会是我们的本能选择。因为并行操作本身涉及到的范围很广,包括软硬件的协调、数据库参数的调整。可以说,并行操作是一种需要特定支持、且不断调试的工程。作为一般情况下,我们尽量不选择将其作为首要优化目标。

 

 

只有对于其他优化策略效果不好,或者根本就没有其他解决方案的时候,考虑进行并行化操作。通常这样情境下的SQL具有如下特点:

 

1、系统关键需求用例,没有回旋和妥协余地。通常是大作业或者报表操作,现有SQL处理方式难以满足用户需求;

2、SQL涉及数据表量巨大,响应时间不能接受;

3、对大数据量数据表或者索引的DDL操作;

 

这样类型的SQL在OLTP系统中是不常见的,OLTP系统的侧重点一般都是高并发、小事务和快速响应。Oracle并行操作是在OLAP系统中广泛应用。当系统中出现了类似的问题和场景,可以考虑使用并行操作来提高系统整体相应。

 

 

ü        主机存在资源盈余

 

 

通常情况下,生产环境的主机一般都不会做到满负荷应用。并行操作是强制性的获取到主机处理资源的一种手段,这样做的前提是主机还存在资源盈余。所以,在判断进行并行操作之前,要确定是否可能主机已经满负荷。

 

 

ü        SQL已经过优化调整

 

在各种调优层次级别中,从业务层面、SQL书写层面进行的调优是性价比最高的一种类型。一种业务思路的变化和优化,可以就消除了若干及其复杂连接扫描操作。所以,进行优化的首先是从SQL本身的业务角度进行优化调整。

 

SQL本身没有调优空间时,而且其他技术不能解决本身的海量数据操作时,可以考虑使用并行操作。

 

2、项目开发中并行操作规划

 

注意,笔者在这里使用到了规划planning。的确,经过上面的介绍,并行操作是一种需要高级别关注的优化方案。笔者认为,可以从下面几个方面做到规划:

 

ü        预先识别,密切关注分析

 

对一些关键用例中涉及到的关键SQL,开发团队中的开发DBA要做到事先心中有数。适时和开发团队设计团队进行沟通交流,提出有益的意见,衡量使用并行操作的必要性和可行性。原则还是一样,能利用串行满足需求,就慎用并行。

 

 

ü        集中规划,统一设置

 

并不是每个需求说需要并行化就进行并行化。我们说整个系统中,需要和能够进行并行化操作的场景是少数。开发DBA在接受到这样的需求之后,要根据投产环境的承受能力按照优先级进行实现。系统的并行承受能力不是无限的,尽可能满足更多的重要用例,获取更高的投入产出比是一个方向。

 

 

ü        保持监控,随时调整

 

优化方案不是一成不变的,因为需求是在不断的变化、数据也在不断的演变,根据一时理解的优化方案可能也有需要变化更新的时候。这就要求存在一种优化方案跟踪机制,定期监控方案并行操作的执行情况和效率。随时发现和解决问题。

 

3、结论

 

并行操作的确立需要慎重,是一个不断重复、推敲和衡量的过程。

这篇关于Oracle并行操作——浅议使用并行的时机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869452

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念