
【Oracle通用优化】
Oracle通用优化
小小工匠
show me the code ,change the world
展开
-
Oracle查询优化-07日期运算
7.1 加减日、月、年在oracle中,date类型可以直接加减天数,而加减月份要用add_months函数.select a.hiredate 雇用日期, a.hiredate + 5 加5天, a.hiredate - 5 减5天, add_months(hiredate, 5) 加5个月, add_months(hiredate,原创 2017-04-02 12:09:11 · 16037 阅读 · 0 评论 -
Oracle查询优化-05元数据查询
5.1列出已创建的表的清单select * from all_tables ;select * from dba_tables ;select * from user_tables ;5.2 列出表的列select * from all_tab_columns a ;select * from dba_tab_columns a ;select * from user_tab_columns原创 2017-04-02 12:05:26 · 13730 阅读 · 0 评论 -
Oracle查询优化-04插入、更新与删除数据
4.1 插入新记录问题向表中插入一条新的记录。解决方案使用带有values子句的insert语句来插入一行。insert into dept(deptno,dname,loc)values(19,'xgj','BEIJING');讨论作为一种简便方式,在insert语句中,可以省略字段列表,然而,如果语句中没有列出要插入行中的目标字段,则必须要插入表中的所有列,需要注意的,在插入值列表中所列出的值原创 2017-04-02 12:03:54 · 14613 阅读 · 0 评论 -
Oracle查询优化-03操作多个表
3.1 UNION ALL 与空字符串3.2 UNION 与 OR3.3 组合相关的行3.4 IN、EXISTS 和 INNER JOIN3.5 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 解析3.6 自关联3.7 NOT IN、NOT EXISTS 和 LEFT JOIN3.8 外连接中的条件不要乱放3.9 检测两个表中的数据及对应数据的条数是否相同3.原创 2017-02-07 20:41:36 · 15145 阅读 · 1 评论 -
Oracle查询优化-02给查询结果排序
2.1以指定的次序返回查询结果2.2按多个字段排序2.3按子串排序2.4 TRANSLATE2.5 按数字和字母混合字符串中的字母排序2.6 处理排序空值2.7 根据条件取不同列中的值来排序原创 2017-02-02 23:27:49 · 13978 阅读 · 0 评论 -
Oracle查询优化-01单表查询
1.1 查询表中所有的行与列1.2 从表中检索部分行1.3 查找空值1.4 将空值转换为实际值1.5 查找满足多个条件的行1.6 从表中检索部分列1.7 为列取有意义的名称1.8 在 WHERE 子句中引用取别名的列1.9 拼接列1.10 在 SELECT 语句中使用条件逻辑1.11 限制返回的行数1.12 从表中随机返回 n 条记录1.13 模糊查询原创 2017-01-31 22:39:57 · 13944 阅读 · 0 评论 -
Oracle-动态性能视图解读
概述动态性能视图属于数据字典,它们的所有者为SYS,并且多数动态性能视图只能由特权用户和DBA用户查询。当数据库处于不同状态时,可以访问的动态性能视图有所不同。启动例程时,ORACLE会自动建立动态性能视图;停止例程时,ORACLE会自动删除动态性能视图。数据字典信息是从数据文件中获得,而动态性能视图信息是从SGA和控制文件取得。所以,两者所反映的信息还是有很大差异的。数据库管理员利用这些动态性能视原创 2016-11-18 19:43:36 · 29764 阅读 · 4 评论 -
Oracle-数据字典解读
概述官方文档Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。Oracle 数据字典是有表和视图组成,它们存放在 SYSTEM 表空间中, 数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。Orac原创 2016-11-19 16:40:47 · 14201 阅读 · 2 评论 -
Oracle海量数据优化-02分区在海量数据库中的应用-更新中
思维导图概述以前梳理了一篇文章, 案例不是很充分Oracle-分区表解读故本篇博文系统的再重新阐述一下原创 2017-01-18 21:46:54 · 13426 阅读 · 0 评论 -
Oracle优化04-Optimizer优化器
思维导图Optimizer概述Oracle数据库中的优化器是SQL分析和执行的优化工具,它负责制定SQL的执行计划,也就是它负责保证SQL执行效率最高.比如优化器决定Oracle是以什么样的方式方式访问数据,是全表扫描(Full Table Scan) 、索引范围扫描(Index Range Scan)还是全索引快速扫描(INDEX Fast Full Scan, INDEX_FFS).对于多表关联原创 2016-12-26 20:59:59 · 14116 阅读 · 0 评论 -
Oracle优化07-分析及动态采样-DBMS_STATS 包
思维导图07系列文章Oracle优化07-分析及动态采样-直方图Oracle优化07-分析及动态采样-DBMS_STATS 包Oracle优化07-分析及动态采样-动态采样DBMS_STATS包DBMS_STAS 包不仅能够对表进行分析,它还可以对数据库分析进行管理。 按照功能可以分一下几类: ( 1) 性能数据的收集 ( 2) 性能数据的设置 ( 3) 性能数据的删除 ( 4) 性能数据原创 2017-01-08 21:01:10 · 15451 阅读 · 0 评论 -
Oracle海量数据优化-01分区的渊源
思维导图概述delete from t where create_time < to_date('2017-01-01','yyyy-mm-dd');当我们看到这条语句时,会想到什么呢? 一条再简单不过的按照条件删除数据库的操作。 如果大量存在,会不会引起系统性能问题呢? 当这个表的数据足够大时,按照这样的方式来清除数据,代价无疑是非常高昂的。我们提出使用分区的方式来解决这个问题。比如 保留历史数据原创 2017-01-12 23:55:45 · 13262 阅读 · 0 评论 -
Oracle优化08-并行执行
思维导图概述在讨论Oracle的性能问题时,通常要假设一个前提,那就是这个系统是OLTP还是OLAP(或者说数据仓库系统)。 只有在这个前提下,讨论一些性能问题才有意义,因为这两类系统太不一样了,甚至很多技术是相悖的。 举个例子 我们说绑定变量,这是一个在OLTP系统上有意义的话题,而对于OLAP系统却完全没有意义,设置不需要它。 再比如说内存命中率,OLTP系统中这个指标非常重要,因为OLTP系原创 2017-01-04 15:04:37 · 13915 阅读 · 0 评论 -
Oracle优化01-引起数据库性能问题的因素
思维导图概述一个数据库是否存在性能问题,基本上在系统设计的时候就决定了,这个系统设计包括软件的设计、数据库的设计和硬件的设计.其中更细节的分类参考目录。在一个系统的设计阶段,其中任何一个环节存在设计不当之处,都可能导致系统的性能下降,而系统的性能在多数情况下又反映为数据库的性能问题。软件设计对数据库的影响软件架构设计对数据库性能的影响软件系统的架构对数据库的影响是非常直接的。 比如一套并发量非常大的原创 2016-12-03 09:52:55 · 15293 阅读 · 2 评论 -
Oracle优化10-SQL_TRACE
思维导图概述当我们想了解一条SQL或者是PL/SQL包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起来就好好像卡在什么地方一样,该如何入手呢?是不是恨不得钻进去看下到底发生了什么? 好在Oracle提供了我们这样的一种方法使用SQL_TRACE来跟踪SQL的执行情况,通过SQLTRACE我们可以很容易的知道当前正在执行的SQL正在干什么。以下操作基于Oracle Database 11g原创 2016-12-14 20:25:35 · 14518 阅读 · 0 评论 -
Oracle优化09-绑定变量
思维导图系列博文Oracle-绑定变量binding variable解读Oracle-Soft Parse/Hard Parse/Soft Soft Parse解读概述绑定变量是OLTP系统中一个非常值得关注的技术点。良好的变量绑定会使OLTP系统数据库中的SQL执行的飞快,内存效率极高。 不绑定变量有可能会使OLTP数据库不堪负重,资源被SQL解析严重消耗,系统显得缓慢。本博文的案例基于Orac原创 2016-12-17 00:03:29 · 13676 阅读 · 0 评论 -
Oracle优化11-10046事件
思维导图Oracle优化10-SQL_TRACE解读Oracle优化11-10046事件10046事件概述上一篇博文中我们说到了SQL_TRACE,10046同样也可以对SQL的执行计划进行分析,并且更加的强大。10046事件并不是ORACLE官方提供给用户的使用命令,在官网中我们也找不到相关的信息,但是目前已经使用的非常广泛。100046事件按照手机的内容分为4个等级Level 1 等同于SQL原创 2016-12-16 01:08:45 · 14050 阅读 · 0 评论 -
Oracle优化12-10053事件
思维导图10053事件概述我们在查看一条SQL语句的执行计划时,只看到了CBO最终告诉我们的执行计划结果,但是我们并不知道CBO为何要这样做。特别是当执行计划明显失真时,我们特别想搞清楚为什么CBO会做出这样的一个选择,那么就可以用10053事件来分析SQL分析过程的trace文件。同10046事件一样,10053事件依然无法在官网上找到相关的信息。10053事件为我们真正的揭开蒙在CBO身上的面纱原创 2016-12-15 00:12:44 · 14345 阅读 · 0 评论 -
Oracle优化06-Hint
概述先了解一下Oracle的优化器:RBO: Rule-Based Optimization 基于规则的优化器RBO自ORACLE 6以来被采用,一直沿用至ORACLE 9i. ORACLE 10g开始,ORACLE已经彻底丢弃了RBO,但是依然保留了这个规则CBO: Cost-Based Optimization 基于代价的优化器。CBO优化器根据SQL语句生成一组可能被使用的执行计划,估算出原创 2016-11-20 22:11:23 · 13495 阅读 · 0 评论 -
Oracle优化03-Latch和等待
思维导图系列Latch解读 Oracle-等待事件解读Latch概述Latch造成的等待事件 和 Lock造成的阻塞 ,是两个不同的概念,在性能优化上如果能区分开这两个因素引起的性能问题,将极大的提高我们性能分析的判断能力。那什么是latch呢? 首先我们试想一个场景: 一个数据块正在被在被一个会话从磁盘读入内存中,请注意,是正在读取中,此时另外一个会话正好也需要这个数据块,那改怎么办呢?为了保持原创 2016-12-18 10:40:13 · 14938 阅读 · 2 评论 -
Oracle优化07-分析及动态采样-直方图
思维导图概述获取准确的段对象(表、表分区、索引等)的分析数据,是CBO存在的基石。所以数据段的分析对于CBO来讲非常的重要。在本篇博文中我们重新梳理一下,从头开始,再一次走进CBO的世界。我们知道CBO的机制是手机尽可能多的对象信息和系统信息,通过对这些信息进行计算、分析、评估,最终得出一个成本最低的执行花来,这就是CBO的全部。 为了让CBO总是能做出最正确的SQL执行计划,就需要给CBO提供尽可原创 2016-12-27 23:53:11 · 13593 阅读 · 0 评论 -
Oracle优化05-执行计划
思维导图系列文章Oracle-SQL Explain Plan解读概述如果要分析某条SQL的性能问题,通常来讲,我们首先要看SQL的执行计划,看看SQL的每一步执行计划是否存在问题。 如果某一条SQL平常执行的都很好,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本上可以判断是执行计划出现了问题。 看懂执行计划变成了SQL优化(其实在大多数的情况下,SQL优化指的是SQL的性能问题定位原创 2016-12-26 23:01:52 · 14071 阅读 · 0 评论 -
Oracle优化07-分析及动态采样-动态采样
思维导图07系列文章Oracle优化07-分析及动态采样-直方图Oracle优化07-分析及动态采样-DBMS_STATS 包Oracle优化07-分析及动态采样-动态采样动态采样Dynamic_sampling动态采样( Dynamic Sampling)技术的最初提出是在 Oracle 9i R2,在段(表,索引,分区)没有分析的情况下,为了使 CBO 优化器得到足够的信息以保证做出正确的执行计原创 2017-01-08 22:17:37 · 13703 阅读 · 0 评论 -
Oracle优化02-锁和阻塞
思维导图概述之前梳理了一篇博文Oracle-锁解读首先弄清楚两个概念:并发 concurrency: 超过两个以上的用户对相同的数据做修改并行 parallel:将一件事情分成很多小的部分,让每一部分同时执行,最后将执行结果汇总。事实上,没有并发就没有锁。 锁的产生是因为并发,并发的产生是因为系统需要,系统需要是因为用户需要…….由唯一性约束引起的阻塞场景模拟Oracle Database 11g原创 2016-12-06 00:14:27 · 13423 阅读 · 0 评论