
Oracle 优化
文章平均质量分 74
woi123
这个作者很懒,什么都没留下…
展开
-
Oracle nologging 的使用
--在archive log模式下,nologging针对以下操作可以有效减少redo size,但必须谨慎地使用这种模式--因为操作不产生日志,若出现介质失败后,dba 无法完全地恢复数据库,必须谨慎小心使用nologging操作--另外的测试,在NOARCHIVELOG 模式,nologging对create table是无效的,而对于create index还是能减少redo si...原创 2012-12-27 16:44:23 · 440 阅读 · 0 评论 -
收获,不止Oracle之索引篇(2)
/*几个索引的扫描方式:INDEX FULLL SCAN:扫描一次只读取一个索引块INDEX FAST FULL SCAN:一次性会读取多个索引块,读取多个数据块不容易保证有序。因此COUNT(*),SUM等不需要排序动作的操作会走INDEX FAST FULL SCANINDEX FULL SCAN(MIN/MAX):索引扫描最大值和最小值*/--UNION优化...原创 2013-08-24 20:16:17 · 97 阅读 · 0 评论 -
收获,不止Oracle之表连接
DROP TABLE T1 PURGE;DROP TABLE T2 PURGE;CREATE TABLE T1(ID NUMBER NOT NULL,N NUMBER,CONTENTS VARCHAR2(4000));CREATE TABLE T2(ID NUMBER NOT NULL,T1_ID NUMBER NOT NULL,N NU...2013-08-25 16:01:06 · 133 阅读 · 0 评论 -
Oracle 压缩表的一点测试
---压缩表可减少数据量,从而减少IODROP TABLE t purge;CREATE TABLE t NOCOMPRESS ASSELECT rownum AS n, rpad(' ',500,mod(rownum,15)) AS padFROM dualCONNECT BY level <= 200000;--收集表统计信息admin@OR...原创 2013-09-08 21:17:30 · 118 阅读 · 0 评论 -
Oracle 直方图
文章整理来源于:剑破冰山之Oracle开发http://www.dbform.com/html/2010/1200.html--下面来先关组下ORACLE的预测行对执行计划的影响。DROP TABLE T PURGE;CREATE TABLE T(ID,COL1,COL2)ASSELECT ROWNUM,CASE WHEN ROWNUM >100 THEN...原创 2013-09-13 16:25:10 · 132 阅读 · 0 评论 -
Oracle 表连接之Hints
hash_join可以通过swap_join_inputs来强制指定build表(或者驱动表),no_swap_join_inputs来强制指定prob表(探查表,或者说被驱动表)配合leading或者ordered可以控制多表之前的连接顺序----------------创建4个测试表create table t1 as select * from dba_objects;...2014-07-21 16:25:15 · 321 阅读 · 0 评论 -
Oracle lock之分析
Oracle 锁Oracle的锁是针对多个会话进行作用的,没有并发就没有锁。锁的实质:是维护一个事务完整性的,锁的信息是数据块的一个属性,是物理的,并不是逻辑上属于某个表或者某几行的。Oracle锁的分类Enqueues --队列类型的锁,通常和业务相关Latches --系统资源方面的锁,比如内存结构,sql解析。 分别模拟insert,update...2013-10-27 07:20:36 · 168 阅读 · 0 评论 -
Oracle latch
Oracle latch vs lock latch lock队列行 无队列性 队列性时长 很短 可能很长层面 数据库资源层 业务应用层目的 保证资源的完整性 保证业务操作的完整性latch在sga中,并不会存在pga中,因为sga中才会存在并发。latch主要存在两块:共享池- sql解析,sql重用数据缓冲区-数据访...2013-10-27 22:26:58 · 93 阅读 · 0 评论 -
Oracle三组难缠的hint no_unnest/unnest,push_subq,push_pred(转载)
常常有人把这三个hint搞混,主要是因为对三种重写原理不清楚。特总结如下。(实验环境为10204)1. no_unnest, unnestunnest我们称为对子查询展开,顾名思义,就是别让子查询孤单地嵌套(nest)在里面。所以un_unnest双重否定代表肯定,即让子查询不展开,让它嵌套(nest)在里面。现做一个简单的实验:create table hao1 as se...原创 2014-04-23 16:19:54 · 213 阅读 · 0 评论 -
所获,不止Oracle之索引篇(1)
/*索引索引由三部分组成,根块(root),Branch(茎块),Leaf(叶子块)。其中Leaf块主要存储了key column value(索引列具体值),以及能具体定位到数据块位置的rowid。索引的创建过程:1.要建索引先排序,将索引列的值顺序取出,及该行的rowid放入到内存中。2.依次将内存中的顺序存放的值和rowid存放入索引块中。3.当填满两个索...原创 2013-08-21 21:11:00 · 92 阅读 · 0 评论 -
[ORACLE]详解not in与not exists的区别与用法(转载)
转载(http://blog.sina.com.cn/s/blog_6ff05a2c0100tref.html)在网上搜了下关于oracle中not exists和not in性能的比较,发现没有描述的太全面的,可能是问题太简单了,达人们都不屑于解释吧。于是自己花了点时间,试图把这个问题简单描述清楚,其实归根结底一句话:not in性能并不比not exists差,关键看你用的是否正确。...原创 2014-05-19 10:46:40 · 199 阅读 · 0 评论 -
Oracle DML产生 REDO SIZE测试
--DML redo测试/**普通表的redo size 为insert 5M,delete 18m, update 24M*临时表redo size 为insert 276096字节, Delete 为15M ,update 为 8M,*全局临时表与基于事务的临时表 产生的redo size差不多。**//**另外的备注,若普通表DML每一步,不comm...2013-08-03 17:46:43 · 171 阅读 · 0 评论 -
Oracle Append Hints
APPEND HINTS 总结: APPEND 属于direct insert。归档模式下append+table nologging会大量减少日志, 非归档模式append会大量减少日志,append方式插入只会产生很少的undo。APPEND的优势:一是减少对空间的搜索,直接在高水位之上插入。二是NOLOGGING会大大减少redo log的产生。...原创 2012-12-27 16:51:52 · 265 阅读 · 0 评论 -
Oralce HWM的一点分析
SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1...原创 2013-01-14 17:30:38 · 157 阅读 · 0 评论 -
Oracle GATHER_TABLE_STATS
DBMS_STATS包问世以后,ORACLE专家可通过一种简单的方式来为CBO收集统计数据。目前,已经不再推荐你使用老式的分析表和DBMS_UTILITY方法来生成CBO统计数据。那些古老的方式甚至有可能危及SQL的性能,因为它们并非总是能够捕捉到有关表和索引的高质量信息。CBO使用对象统计,为所有SQL语句选择最佳的执行计划。DBMS_STATS能良好地估计统计数据(尤其是针对较...原创 2013-01-31 16:16:30 · 2225 阅读 · 0 评论 -
Oracle 统计信息
--Oracle 优化器统计信息Oracle优化器统计信息描述了关于数据库和相关对象的统计信息,当执行SQL查询时,优化器会使用这些统计信息估算出各种不同的执行计划的资源消耗,,从而选择最高效的执行计划。当统计信息缺失或者陈旧时,Oracle可能会选择错误的执行计划,导致SQL执行效率低下。优化器统计信息包括以下部分:表级别统计信息1. 数据行数2. 数据块数...原创 2013-12-01 11:34:53 · 148 阅读 · 0 评论 -
Oracle AUTOTRACE 统计信息
AUTOTRACE 中 统计信息的解释: RECURSIVE CALLS:递归读为了保证用户发的SQL的顺利执行,ORACLE必须执行一些额外的语句。这些语句就叫做递归读。它内部产生一条维护的语句,就会有一条递归读。 DB BLOCK GETS:以即时读模式从BUFFER CACHE中读取的数据块,任何时候在BUFFER CACHE中都只有一份当前数据块。即时读通常发生在对...原创 2013-02-06 10:56:42 · 135 阅读 · 0 评论 -
Oracel SQL_TRACE摘抄
SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。1.在数据库级别开启trace SQL> ALTER SYSTEM SET SQL_TRACE = TRUE;SQL> ALTER SYSTEM SET SQL_TRACE = FALSE; 2.在当前SES...原创 2013-02-24 22:00:43 · 124 阅读 · 0 评论 -
文章摘抄-收获,不止Oracle
/*摘抄收获,不止Oracle*/--从一条UPDATE语句看Oracle体系结构SQLPLUS ADMIN/ADMINUPDATE TT1 SET ID = 6 WHERE OBJECT_ID = 12;/*1.执行SQLPLUS ADMIN/ADMIN,Oracle会在PGA内存区域开辟一个私有进程/线程,保存此SESSION的环境配置,登陆权限等。...原创 2013-07-28 21:55:29 · 150 阅读 · 0 评论 -
Oralce 索引聚簇因子
--聚合因子试验准备:--分别建两张有序和无序的表CREATE TABLE T_COLOCATED ( ID NUMBER, COL2 VARCHAR2(100) );BEGIN FOR I IN 1 .. 100000 LOOP INSERT INTO T_COLOCATED(ID,COL2) ...原创 2013-07-29 17:51:11 · 244 阅读 · 0 评论 -
Oracle sequence cache
create table tab_test_seq(id number,col1 number(14) ,col2 varchar2(24)) ;create sequence seq_test_insert;--seqence默认cache是20alter sequence seq_test_insert nocache;SQL> select sequen...原创 2014-11-04 10:19:17 · 153 阅读 · 0 评论