随笔分类 -  oracle性能优化

SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表)
摘要:swap_join_inputs是针对哈希连接的hint,它的含义是让优化器交换原哈希连接的驱动表和被驱动表的顺序,即在依然走哈希连接的情况下让原哈希连接的驱动表变被驱动表,让原哈希连接的被驱动表变为驱动表。 注意,在swap_join_inputs hint中指定的目标表应该是原哈希连接中的被驱动 阅读全文

posted @ 2017-04-30 19:41 张冲andy 阅读(1517) 评论(0) 推荐(0) 编辑

Nested loops、Hash join、Sort merge join(三种连接类型原理、使用要点)
摘要:nested loop 嵌套循环(原理):oracle从较小结果集(驱动表、也可以被称为outer)中读取一行,然后和较大结果集(被侦查表,也可以叫做inner)中的所有数据逐条进行比较(也是等值连接,也可以是非等值连接),如果符合规则,就放在结果集中,然后取驱动表的下一条数据继续循环,直到结束。简 阅读全文

posted @ 2017-04-28 10:46 张冲andy 阅读(1277) 评论(0) 推荐(0) 编辑

如何加快建 index 索引 的时间
摘要:朋友在500w的表上建索引,半个小时都没有结束。所以就讨论如何提速。 一.先来看一下创建索引要做哪些操作:1. 把index key的data 读到内存==>如果data 没在db_cache 中,这时候很容易有大量的db file scatter read wait2. 对index key的da 阅读全文

posted @ 2017-04-18 09:06 张冲andy 阅读(2694) 评论(0) 推荐(0) 编辑

虚拟索引
摘要:从9.2版本开始Oracle引入了虚拟索引的概念,虚拟索引是一个“伪造”的索引,它的定义只存在数据字典中并有存在相关的索引段。虚拟索引是为了在不真正创建索引的情况下,验证如果使用索引sql执行计划是否改变,执行效率是否能得到提高。一、虚拟索引支持类型虚拟索引支持B-TREE索引和BIT位图索引,在C 阅读全文

posted @ 2017-04-05 17:31 张冲andy 阅读(716) 评论(0) 推荐(0) 编辑

普通表转分区表(交换分区、在线重定义)
摘要:将普通表转换成分区表有 4 种方法:1. Export/import method2. Insert with a subquery method3. Partition exchange method4. DBMS_REDEFINITION下面我们来讨论:交换分区 Partition exchan 阅读全文

posted @ 2017-04-05 14:42 张冲andy 阅读(2063) 评论(0) 推荐(0) 编辑

Merge into使用详解( 同时执行inserts和updates操作 )
摘要:Merge是一个非常有用的功能,类似于MySQL里的insert into on duplicate key. Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定 阅读全文

posted @ 2017-04-04 12:56 张冲andy 阅读(3623) 评论(0) 推荐(0) 编辑

MOVE降低高水位 HWM
摘要:MOVE降低高水位 HWM--创建实验表空间SQL> create tablespace andy03 datafile '/home/oracle/app/oradata/orcl/andy03.dbf' size 10M autoextend on next 30M; --创建实验数据SQL> 阅读全文

posted @ 2017-04-02 10:00 张冲andy 阅读(449) 评论(0) 推荐(0) 编辑

直方图、基数、选择性、群集因子
摘要:基本概念 基数(Cardinality) 列唯一键(Distinct_keys)的数量,比如性别,该列只有男女之分,所以这一列基数是2。 选择性(Selectivity) 列唯一键(Distinct_Keys)与行数(Num_Rows)的比值。 直方图 (Histogram)是一种对数据分布质量情况 阅读全文

posted @ 2017-03-19 23:12 张冲andy 阅读(500) 评论(0) 推荐(0) 编辑

oracle隐含参数的查看与修改
摘要:v$parameter视图中查询参数的时候其实都是通过x$ksppi和x$ksppcv这两个内部视图中得到的。 1. 可以通过如下方式查询当前实例的所有隐含参数: col name for a30;col value for a10;selectx.ksppinm name,y.ksppstvl v 阅读全文

posted @ 2017-02-26 14:27 张冲andy 阅读(11407) 评论(0) 推荐(0) 编辑

三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF
摘要:三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF理论背景Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是 阅读全文

posted @ 2017-02-25 22:04 张冲andy 阅读(573) 评论(0) 推荐(0) 编辑

oracle表分区详解(按天、按月、按年等)
摘要:分区表的概念: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。分区表的优点:1) 改善查询性能:对分区对象的 阅读全文

posted @ 2016-12-30 23:17 张冲andy 阅读(81424) 评论(1) 推荐(1) 编辑

B-index、bitmap-index、text-index使用场景详解
摘要:索引的种类:B-tree索引、Bitmap索引、TEXT index 1. B-tree索引 介绍: B-tree 是一种常见的数据结构,也称多路搜索树,并不是二叉树。B-tree 结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。 适用场景:索引字段有着很高的selectivity或者 阅读全文

posted @ 2016-12-30 13:28 张冲andy 阅读(2006) 评论(0) 推荐(0) 编辑

等待事件分析
摘要:在Oracle 10g中的等待事件有872个,11g中等待事件1116个。 我们可以通过v$event_name 视图来查看等待事件的相关信息。1.1 查看v$event_name视图的字段结构:SQL> desc v$event_name Name EVENT# EVENT_ID NAME PAR 阅读全文

posted @ 2016-12-29 22:52 张冲andy 阅读(753) 评论(0) 推荐(0) 编辑

Oracle Hints详解
摘要:在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用。基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变 阅读全文

posted @ 2016-12-29 12:12 张冲andy 阅读(8612) 评论(0) 推荐(0) 编辑

执行计划-数据访问方式(全表扫描与4种索引的方式)
摘要:执行计划 Oracle执行计划的相关概念: Rowid:系统给oracle数据的每行附加的一个伪列,包含数据表名称,数据库id,存储数据库id以及一个流水号等信息,rowid在行的生命周期内唯一。 Recursive sql:为了执行用户语句,系统附加执行的额外操作语句,譬如对数据字典的维护等。 R 阅读全文

posted @ 2016-12-27 21:34 张冲andy 阅读(797) 评论(0) 推荐(0) 编辑

锁的种类,阻塞,死锁产生与解决办法。
摘要:TM锁的种类: TM锁几种模式的互斥关系: 阻塞 定义:当一个会话保持另一个会话正在请求的资源上的锁定时,就会发生阻塞。被阻塞的会话将一直挂起,直到持有锁的会话放弃锁定的资源为止。4个常见的dml语句会产生阻塞INSERTUPDATEDELETESELECT…FOR UPDATE ————————— 阅读全文

posted @ 2016-12-22 23:37 张冲andy 阅读(567) 评论(0) 推荐(0) 编辑

10046事件跟踪会话sql
摘要:背景知识: 10046 事件按照收集信息内容,可以分成4个级别: Level 1: 等同于SQL_TRACE 的功能 Level 4: 在Level 1的基础上增加收集绑定变量的信息 Level 8: 在Level 1 的基础上增加等待事件的信息 Level 12:等同于Level 4+Level 阅读全文

posted @ 2016-12-20 11:37 张冲andy 阅读(811) 评论(0) 推荐(0) 编辑

利用sql_trace跟踪一个指定会话的操作
摘要:1. sys用户给管理用户授权。SQL> grant execute on sys.dbms_system to andy;Grant succeeded.2. 查询被跟踪用户的sid,serial# SQL> select sid,serial# from v$session where user 阅读全文

posted @ 2016-12-18 23:06 张冲andy 阅读(319) 评论(0) 推荐(0) 编辑

SQL_TRACE与tkprof分析
摘要:一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中 阅读全文

posted @ 2016-12-18 14:41 张冲andy 阅读(580) 评论(0) 推荐(0) 编辑

是否使用绷定变量的一些建议
摘要:1、建议使用绑定变量的列:对于流水号、订单号、用户ID、电话号码、身份证号码、证件号码等,这类列的特点是列的唯一性较好、列的不同值数量跟表的数据量比较接近,而这类列涉及的SQL语句往往存在高并发,写成绑定变量会大大减少数据库的解析成本。 2、不建议使用绑定变量的列:能够枚举的列(比如状态类型字段,这 阅读全文

posted @ 2016-12-10 22:51 张冲andy 阅读(294) 评论(0) 推荐(0) 编辑

导航