拓扑园

  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队-Oracle脚本合集(文章)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL相关
  • Linux
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
Oracle数据库恢复专家团队:TEL:18562510581(微信同号);QQ:284833194;QQ群:496333360
天高任鸟飞
  1. 首页
  2. Oracle基础知识
  3. 图灵小队
  4. 正文

Oracle Parallel使用经验谈(转)

2023年5月11日 126点热度 0人点赞 0条评论

https://www.modb.pro/db/42185

记得很多年前,在深圳软件园里给一家公司开发经营分析系统,其中一个同事从富士康出来的它自称是DBA。不过公司给他安排的是数据库开发工程师的职位,参与经营分析系统的开发工作。此时该系统已上线了半,有大量的领导在使用。他老兄使用工具查询开启了并行,没有指定并行数,立刻导致系统不能使用,尤其是领导无法连接进来查看报表数据。

并行技术应该在什么情况下使用呢? 

该技术要在准备完成一件很大的工作任务时,使用常规方法需要1个小时,并且该任务可以拆分多个子任务同时进行。比如说一个10GB的全表扫描,就可以开启并行技术,把表分成5分,每个子任务扫描其中2GB大小,然后再汇总。(不要抠2GB数字)

比如 下面统计全国百家姓的收入排行版

SELECT  SUBSTR(NAME,1,1),SUM(MONEY)

FROM   country

group by SUBSTR(NAME,1,1)

order by 2 desc;

为了快速完成统计 要加并行提升 /*+ parallel(n)*/ 一般n为2,4,6,8 2的指数.

SELECT  /*+ parallel(8)*/

SUBSTR(NAME,1,1),SUM(MONEY)

FROM country

group by SUBSTR(NAME,1,1)

order by 2 desc;

那么你会发现系统多出了8个进程,8个会话,而且执行计划都看到PX 的字眼.

那富士康的同事没有指定N值 ,这样给的提示 /*+ parallel */  这样的提示系统最大限度使用资源,从而导致其他人无法使用系统. 这点应该写在SQL规范里,禁止选项中.

 

那是不是看到跑得慢的SQL都试一试? 

绝非如此,不要看到一项提高SQL的技术,就认为它是个润滑油,什么地方都用的去,它有使用的场景.那就是   1 系统资源必须很充分,  2 只有少量的用户使用.

因此只有OLAP系统使用并行技术才能提高速度又没有什么风险.

当然OLTP场景下也可以,在OLTP数据维护下方可以使用. 比如建索引,CATS移动数据.

create table tmp_xxxx parallel 8 as select * from xxxx;

creae index ix_xxxx_name on xxxx(name) parallel 8;

这样会加快完成速度. 当然小心一点,那就是别完了取消并行技术. 这样的开并行会留在数据字典上的. 日后所有查询该表的SQL自然开启并行技术,所以要关掉它.

alter table tmp_xxxx noparallel;
alter index ix_xxxx_name noparallel;

DML并行:

DML是数据修改 INSERT,UPDATE,DELETE下 当要更新1亿条数据的状态值时,想要尽快地下班,别加班傻等到晚上10点. 那就这样干!

alter session enable parallel dml;
update country set money=money+10000;
commit;
alter session disable parallel dml;

为什么最后要DISABLE它呢? 因为开启DML并行后会加表锁,而且是独占型的锁.会阻止其他人修改数据.

最后您即使给了提升,当优化器不认可使用也是大有的. 因为它优化器觉得还有更好的办法.

小仙再次提醒各位 小心并且注意并行PARALLEL的使用场景:

1 系统资源必须很充分,  主要是IO资源足够空闲,又时候并且多了IO等待很慢.

2 只有少量的用户使用.这用户不仅是人,还有定时任务产生的会话, ORABBIX定时监控等.

一般系统千万别开PARALLEL ,如果是OLTP 比如报表,数据仓库,大数据,经验分析这类鬼系统,就可以放心地开!

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2023年5月12日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号