自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 部署MySQL自动化运维工具inception+archer

***************************************************************************部署MySQL自动化运维工具inception+archer 2018年03月28日 leo***********************************************************************

2018-03-29 13:12:09 5527 2

转载 RAID5和RAID10在磁盘读写选择对比

磁盘读写速度的关键之一:Cache    cache技术最近几年,在磁盘存储技术上,发展的非常迅速,作为高端存储,cache已经是整个存储的核心所在,就是中低端存储,也有很大的cache存在,包括最简单的RAID卡,一般都包含有几十,甚至几百兆的RAID cache。    cache的主要作用是什么呢?作为缓存,cache的作用具体体现在读与写两个不同的方面:作为写,一般存储阵列

2018-02-01 18:16:36 22918

转载 RAID10和RAID5区别比较,利用率与安全的取舍

为了方便RAID 10和RAID5对比,这里拿同样多驱动器的磁盘来做对比(4个相同的磁盘),RAID 5可以选择3D+1P的RAID方案,RAID 10则可以选择2D+2D的RAID方案。安全性方面的比较, 其实在安全性方面,勿须质疑,肯定是RAID 10的安全性高于RAID 5。我们也可以从简单的分析来得出。当盘1损坏时,对于RAID 10,只有当盘1对应的镜象盘损坏,才导致

2018-02-01 18:08:34 24283

翻译 pandas

pandas是基于numpy的一种工具,该工具是为了解决数据分析任务而创建的。pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。本文是对官方网站上《10 Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookb

2018-01-31 15:10:19 345

原创 29 超大表与超小表HASH JOIN优化方法--优化主题系列

select * from a,b where a.id=b.id;a表100GB b表50MB 如何优化?? select *,(select * from b wherea.id=b.id) from a;  --标量子查询A表100GB 是不是几十亿的数据??如果是标量子查询 A返回一条 B就会扫描1次 相当于B被扫描几十亿次即使B走索引 走索引至少读3个块 然后回表一个

2018-01-11 17:53:20 2404

原创 28 分析函数优化自连接,减少表访问次数 --优化主题系列

有如下SQL(基于HROracle11gR2):selectemployee_id, first_name, last_name, salary  from employees a where salary = (select min(salary)                   from employees b                  where b.depa

2018-01-10 09:04:27 497

原创 27 分页语句优化--优化主题系列

分页语句 一般都有orderby column desc/asc或者说 分页语句里直接就是where rownum xx一般只返回20行或者50行 一般不会一页显示超过100行 分页语句的优化技巧:1.分页SQL要想快最好走索引根据orderby asc/desc用hintindex_asc/index_desc   强制它走索引INDEXFULL SCAN  DES

2018-01-08 17:57:40 310

转载 Oracle 11g Dataguard 配置,维护与详解 (ADG)

一、前言:       本手册主要记录如何配置,还介绍了配置原因,以及注意要点,已经主备切换,以及故障转移等重要操作步骤,我希望这个文章可以作为进行dataguard配置的一个参考手册。二、前提1.主库是归档模式:          如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的。透过很多修饰的官方语言,我们需要明确DG(da

2017-11-07 09:38:57 4218

原创 26 union代替or-续 --优化主题系列

看了5秒钟 回复哥们说把or展开成union但是那哥们SQL确实太菜了呵呵 只好帮忙写一个了SQL改写之后 执行时间由原来的20秒下降到6秒 逻辑读由804560降低到128422性能还是有很大提升的 到了这里优化还没完 可以创建一个组合索引进一步优化createindex idx on swgl_ddjbxx(fzgs_dm,xjbz,FROMNBGL1);创

2017-10-31 10:50:16 256

原创 25 union代替or --优化主题系列

当SQL语句中 or条件上面有一个为子查询 这个时候就可以用union代替or或者你发现执行计划中的filter有or 并且or后面跟上子查询EXISTS(select...)的时候就要注意 比如:当然了 当你看到operation中的filter也应该要注意这些看到filter后有orexists(select xx) 则改成union 示例如下(请自己动手实验):

2017-10-31 10:47:02 461

原创 24 exdata架构探讨--优化主题系列

为什么Oracle做数据库海量数据Oracle为什么有缺陷??Oracle是不是sharedisk架构??rac系统是不是sharedisk架构多个实例用的是共享存储意思就是说存储的I/O吞吐量始终上不去因为Oracle一个进程一次I/O只能读1MB的数据为什么数据仓库要开并行??8个并行那么就是一次读8MB并行不是说你想开多少就多少一个进程要耗费2GB的PGA内存你开8个

2017-10-19 17:57:39 416

转载 Oracle Database 18c 的10大新特性一览

在 2017 Oracle OpenWorld大会上,关于 Oracle 18c 的一系列新特性已经被披露出来,借助分散在各个会场的公开分享主题和内容、OOW提供的PPT下载,我们和大家抢鲜分享一下 18c 中极具吸引力的新特性。注意:标题里提到的10仅为约数,文章中提到的新特性不仅10个,分列也只是为了阅读便利,这些特性可能随着版本发布发生改变,仅供参考。

2017-10-18 10:42:00 463

原创 23 查看真实基数--优化主题系列

Oracle估算的行数就叫基数??Oracle估算的行数是2967行是真实的还是假的??我们怎么去查看它真实返回多少行呢??

2017-10-17 15:35:30 279

原创 22 谓词推入(pushing predicate) --优化主题系列

谓词推入(PUSHING PREDICATE) Pushing Predicate(谓词推入):当SQL语句中包含有不能合并的视图,并且视图有谓词过滤(也就是where过滤条件),CBO会将where过滤条件推入视图中,这个就叫做谓词推入。谓词推入的主要目的就是让Oracle尽可能早的过滤掉无用的数据,从而提升查询性能。

2017-10-16 16:48:09 3497

原创 21 视图合并(view merge) --优化主题系列

视图合并(view merge) 当SQL语句中有内联视图(in-line view,内联视图就是在from后面有select子查询)或者SQL语句中有用 create view...创建的视图,CBO会将内联视图/视图给展开,进行等价的改写,这个过程就叫做视图合并。如果没有发生视图合并,在执行计划中,我们可以看到VIEW关键字。

2017-10-13 10:28:06 3081

原创 20 查询变换(subquery unnesting) --优化主题系列

子查询非嵌套(subquery unnesting) 在学习subquery unnesting之前,先深入理解 执行计划中的FILTER,可以这样说,绝大部分复杂的子查询,性能问题基本上都是出现在FILTER上面。现在举个例子解释一下什么是FILTER。(你们要模拟就自己创建一个test表,数据从dba_objects复制)

2017-10-13 09:42:33 616

原创 19 嵌套循环成本计算--优化主题系列

嵌套循环成本计算(请自己跟着做实验计算一下) select * from v$version where rownum=1; --11.2.0.1.0create table t1 as select object_id id , object_name,owner fromdba_objects;create table t2 as select object_id id , s

2017-10-12 12:03:58 702

原创 18 索引扫描成本计算--优化主题系列

什么时候走索引扫描什么时候走全表扫描今天来彻底搞懂 索引扫描成本计算(请下去自己计算索引扫描的成本)select * from v$version where rownumcreate table t as select * from dba_objects; create index idx_t on t(object_id); BEGIN DBMS_STATS.GA

2017-10-12 10:32:37 481

原创 17 全表扫描成本计算--优化主题系列

看执行计划中 COST到底是怎么算出来的 下面探讨下成本计算 很多人在做SQL优化的时候都会去看cost,很多人经常问,为什么cost很小,但是SQL就是跑很久不出结果呢?我在这里告诉大家,做SQL优化的时候不要去看cost,因为这些cost是根据统计信息,根据一些数学算法计算出来的,正是因为cost是基于统计信息,基于数学算法计算出来的,那么一旦统计信息有误差,数学算法有缺陷,那么cost就是错误的,而一旦cost计算错误,那么执行计划很可能就错了。所以我们在做SQL优化的时候不要去看cost。这个

2017-10-11 10:35:54 364

原创 16 反连接(anti-join)--优化主题系列

反连接(anti-join) 反连接其实是特殊的半连接。只是把in/exists换成了not in/not exists执行计划中,看到有 NESTED LOOPS ANTI/HASH JOIN ANTI 就表示有反连接

2017-10-11 09:47:17 13986

原创 15 半连接(semi-join)--优化主题系列

半连接(semi-join) 半连接是指两个表/结果集做JOIN,但是只返回某一个表/结果集中的数据。执行计划中,看到有 NESTED LOOPS SEMI/HASH JOIN SEMI 就表示有半连接

2017-10-10 17:01:46 1011

原创 14 外连接(hash join outer)--优化主题系列

外连接(outer join)外连接有三种,left outer join,right outer join,full outer join。左外连接,左表就做驱动表,右外连接,右表就做驱动表 --在NL的时候 如果走HASH JOIN 没有这个限制如果SQL是用ORACLE的写法 加号的另一边的表做驱动表

2017-10-10 16:57:24 9630

原创 13 笛卡尔积(CARTESIAN)--优化主题系列

当一个SQL中两个表无关联条件,或者关联条件可以被忽略的时候就会发生笛卡尔积。遇到这种情况要仔细分析SQL是否符合需求,是不是SQL写错了。在有些情况下,如果CBO预估两个表返回的行数很少(通常小于10),那么也可能发生笛卡尔积。遇到这样的情况:1.如果SQL跑得很快,并且两个表返回的真实行数确实很少,那么走笛卡尔积可能是最优化 的,这个时候我们不用管。只要是SQL跑得快我们都不用管。2.统计信息不准确导致CBO错误估算,从而引发笛卡尔积连接。这时要更新统计信息。3.CBO计算返回行数错误,导致笛

2017-10-09 10:35:17 2170

原创 12 排序合并连接(SORT MERGE JOIN)--优化主题系列

排序合并连接(SORT MERGE JOIN) 前文提到嵌套循环以及哈希连接,他们都有驱动表概念。排序合并连接没有驱动表一说,两个表/行源是对等关系。排序合并连接原理是先对两个表/行源根据JOIN列进行排序(当然了排序的时候要踢出不符合where条件的列),然后再进行连接。排序合并连接可以处理非等值JOIN。有时候,出现了非等值JOIN,还非得走SORT MERGE JOIN不可。根据排序合并的原理,我们知道排序合并连接其实很耗费资源,因为要对2个表/结果集进行排序,所以一般情况下,CBO是不会选择走S

2017-10-09 10:30:32 9294

原创 11 哈希连接(HASH JOIN)--优化主题系列

前文提到,嵌套循环只适合输出少量结果集。如果要返回大量结果集(比如返回100W数据),根据嵌套循环算法,被驱动表可能会被扫描100W次,显然这是不对的。看到这里你应该明白为什么有些SQL优化了跑几秒,没优化跑几个小时甚至跑1天都不出结果。返回大量结果集适合走HASH JOIN。HASH JOIN算法非常复杂,这里就不讨论了。

2017-10-07 21:12:32 1671

原创 10 嵌套循环(NESTED LOOP)--优化主题系列

Oracle从较小结果集(驱动表/外部表)中读取一行,然后和较大结果集(被探查表/内部表)中的所有数据逐条进行比较(嵌套循环可以用于非等值连接),如果符合规则,就放入结果集中,然后取较小结果集的下一条数据继续进行循环,直到结束。嵌套循环只适合输出少量结果集或者是用于快速输出结果集。

2017-09-30 09:17:33 7104

原创 9 join方法--优化主题系列

表(结果集)与表(结果集)之间的连接方式非常重要,如果CBO选择了错误的连接方式,本来几秒就能出结果的SQL可能跑一天都跑不完。如果想要快速定位超大型SQL性能问题,就必须深入理解表连接方式。在多表JOIN的时候,只能是2个表先JOIN,JOIN之后的结果再和其他表/结果集关联,也就是说任何时候都是只能2个表在做JOIN。

2017-09-30 09:10:50 358

原创 windows平台定期执行rman全备

脚本准备:D:\backup\rman.batrman target sys/oracle cmdfile 'd:/backup/rman_backup.txt' log 'd:/backup/%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log'D:\backup\rman_backup.txtRUN {delete noprompt

2017-09-29 13:52:30 1751

原创 8 访问路径介绍--优化主题系列

访问路径(ACCESS PATH)如table access full、rowid scan、index unique scan、index range scan、index skip scan、index full scan、index fast full scan、index range scan descending、index full scan(min/max)、mat_view rewrite access full等,并将一步步道来。

2017-09-29 10:15:57 601

原创 7 访问路径概述--优化主题系列

访问路径(ACCESSPATH)前面提到过执行计划中的访问路径,访问路径指的是ORACLE通过哪种方式去获取数据,比如通过全部扫描,索引扫描,或者通过ROWID获取数据。下面列举一些常见的访问路径:(注意:我没有完全列举所有的访问路径,只列举了工作中99%见到的) 如tableaccess full、rowidscan、indexunique scan、indexrange s

2017-09-29 10:05:56 437

原创 6 执行计划--优化主题系列

在做SQL优化的时候,都必须查看执行计划,看执行计划的时候一定要用SQLPLUS去看,千万不要用PL/SQL DEV/TOAD/EM等工具去看执行计划。因为这些工具只能看到访问路径,无法看到谓词过滤信息,而恰巧,谓词过滤信息是执行计划中的重中之重。可以这样说,如果有谁用PL/SQL DEV/TOAD/EM等工具查看执行计划,那他一定是个SQL优化菜鸟。

2017-09-28 12:45:22 413

原创 5 统计信息--优化主题系列

在OLTP系统中要优化一个SQL语句,首先要保证SQL语句中所有的表统计信息是准确的。如果统计信息都不准确,那么SQL优化就无从谈起。在OLAP系统中,如果数据量特别大,一般不会去收集统计信息,会直接利用HINT把执行计划给固定住。

2017-09-28 12:35:45 456

原创 4 聚簇因子--优化主题系列

聚簇因子(Clustering Factor) 用来描述一个表中的列是否是规则排序的。

2017-09-26 10:10:10 298

原创 3 直方图--优化主题系列

直方图当某列数据分布不均衡,为了让CBO能生成最佳的执行计划,我们可能需要对表收集直方图,直方图最大的桶数(Bucket)是254。收集直方图是一个很耗时的过程,如无必要,千万别去收集直方图。

2017-09-26 09:07:24 427

转载 开启大页详解

什么时侯使用大页呢,当你主机的物理内存为64G,设SGA>=32G时,建议开启大页,步骤如下:1、 关闭Oracle Database 11g中的AMM(Automatic Memory Management),即把两个参数MEMORY_TARGET / MEMORY_MAX_TARGET设为0[html] view plain copy

2017-09-22 15:12:16 896

原创 2 基数与选择性--优化主题系列

基数与选择性    基数(Cardinality)列唯一键(Distinct_keys)的数量,比如性别,该列只有男女之分,所以这一列基数是2。主键列的基数等于行数。注:NULL值一般不算在基数里面。    选择性(Selectivity)列唯一键(Distinct_Keys)与行数(Num_Rows)的比值。

2017-09-22 09:21:00 368

原创 1 如何掌握编写一套高质量SQL之本领--优化主题系列

对SQL的编写优化技巧网上资料浩如烟海,也有很好的一些总结性资料,目前总结了以下部分,可供参考。但真正搞懂SQL最优,掌握编写一套高质量SQL之本领,定当要对SQL的执行原理进行深刻的挖掘与剖析。至此,本人将分章节逐步介绍:基数与选择性、直方图、聚簇因子、统计信息、执行计划、访问路径(全表扫描、rowid扫描、索引唯一扫描、索引范围扫描、索引跳跃扫描、索引全扫描、索引快速全扫描等等)、JOIN

2017-09-21 17:53:22 492

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除