摘要: 在以前的一篇文章中,介绍过额外的关联对SQL的影响是很大的,所以在sql审核的工作中,对于表关联的关注是相当多的,如果冗余能够优化掉表关联,偶都尽量在表设计上做些冗余处理;在10gR2中,发现优化器可以优化掉一些不必要的关联…… 9206: SQL> set autot on SQL> select count(*) 2 from dept d, emp e 3 where d.deptno = e.deptno; COUNT(*) ---------- 12 Execution Plan -----------------------------------------... 阅读全文
posted @ 2009-02-26 21:43 爱生活,爱编程 阅读(124) 评论(0) 推荐(0) 编辑
摘要: Oracle的优化器有两种优化方式,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO),在Oracle8及以后的版本,Oracle强列推荐用CBO的方式 RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。 CBO方式:它是看语句的代价(Cost),这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小、有少行、每行的长度等信息。这 阅读全文
posted @ 2009-02-26 21:42 爱生活,爱编程 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 当Oracle运行PL/SQL时会使用两套引擎,所有procedural code由PL/SQL engine 完成,所有SQL由SQL engine处理。所以如果Oracle从一个collection中循环执行相同的DML操作,那么为了避免两套engine切换所消耗的系统资源,可以使用bulk binds来把所有的DML操作binding到一次操作中完成。这将极大提高PL/SQL的执行效率。 以下是简单的测试,用两种方式插入100000条数据,可以看到效率提高了7倍左右。SQL> CREATE TABLE test1( 2 id NUMBER(10), 3 ... 阅读全文
posted @ 2009-02-26 21:40 爱生活,爱编程 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 近期来,FreeList的重要作用逐渐为Oracle DBA所认识,网上也出现一些相关的讨论。本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等。而与FreeList密切相关的一个重用特性HWM,与sql性能密切相关,本文也作了原理分析介绍。在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。 缩略语: ASSM:auto segement space management HWM:high water mark DBA:data blo... 阅读全文
posted @ 2009-02-26 21:37 爱生活,爱编程 阅读(1274) 评论(0) 推荐(0) 编辑
摘要: 1、前言 目前所有使用oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量。 当然在oracle中创建分区是一种不错的选择,但是当你发现你的应用有多张表关联的时候,并且这些表大部分都是比较庞大,而你关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小并且查询得到这个结果集的速度非常快,那么这个时候我考虑在oracle中创建“临时表”。 我对临时表的理解:在oracle中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有功能才用的,而当你用完之后表中的数据就没用了。oracle的临时表创建之后基本不占用表 阅读全文
posted @ 2009-02-26 21:35 爱生活,爱编程 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 在过去的十年中,Oracle已经成为世界上最专业的数据库之一。对于IT专家来说,就是要确保利用Oracle的强大特性来提高他们公司的生产力。最有效的方法之一是通过Oracle调优。它有大量的调整参数和技术来改进你的Oracle数据库的性能。 Oracle调优是一个复杂的主题。关于调优可以写整整一本书,不过,为了改善Oracle数据库的性能,有一些基本的概念是每个Oracle DBA都应该遵从的。 在这篇简介中,我们将简要地介绍以下的Oracle主题: --外部调整:我们应该记住Oracle并不是单独运行的。因此我们将查看一下通过调整Oracle服务器以得到高的性能。 --Row re-sequ 阅读全文
posted @ 2009-02-26 21:33 爱生活,爱编程 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 好长时间没怎么看 Oracle 技术文档了,今天阅读了一篇 Oracle Response Time Optimization with Method R. 这是 Optimizing Oracle Performance 经典图书这本经典图书的主旨方法。R 代表响应时间(response time).具体的定义如下: 1. Target the tasks that are critical to the business. 2. Collect properly scoped, un-aggregated profile data for each task while the task. 阅读全文
posted @ 2009-02-26 21:32 爱生活,爱编程 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 索引在各种关系型数据库系统中都是举足轻重的组成部分,其对于提高检索数据的速度起至关重要的作用。在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等。本文主要就前6种索引进行分析,由于interMedia全文索引涉及的内容可以单独写一篇文章,所以不在此对其做分析。 首先给出各种索引的简要解释: b*tree index:几乎所有的关系型数据库中都有b*tree类型索引,也是被最多使用的。其树结构与二叉树比较类似,根据rid快速定位所访问的行。 反向索引:反转了b*tree索引码中的字节,是索引条目分配更均匀,多用于并行服 阅读全文
posted @ 2009-02-26 21:28 爱生活,爱编程 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 消耗在准备新的SQL语句的时间是Oracle SQL语句执行时间的最重要的组成部分。但是通过理解Oracle内部产生执行计划的机制,你能够控制Oracle花费在评估连接顺序的时间数量,并且能在大体上提高查询性能。 准备执行SQL语句 当SQL语句进入Oracle的库缓存后,在该语句准备执行之前,将执行下列步骤: 1) 语法检查:检查SQL语句拼写是否正确和词序。 2) 语义分析:核实所有的与数据字典不一致的表和列的名字。 3) 轮廓存储检查:检查数据字典,以确定该SQL语句的轮廓是否已经存在。 4) 生成执行计划:使用基于成本的优化规则和数据字典中的统计表来决定最佳执行计划。 5) 建立二进制 阅读全文
posted @ 2009-02-26 21:26 爱生活,爱编程 阅读(375) 评论(0) 推荐(0) 编辑
摘要: Oracle数据库在不同的地域被人们广泛使用,所以就必须要有专业的Oracle人员懂得网络连接是怎么样影响数据库性能的。Oracle提供的TNS允许在每个数据库中进行分配通信。 TNS服务器被看作Oracle的逻辑数据请求中的绝缘体和远程服务器间的服务器。同样的,网络管理员有能力控制网络性能调谐性,但是Oracle管理员没有控制影响数据库性能的网络设置的权利。 可以利用下面我所说的重要的设置来改变分布式事物元的性能。其中包括了sqlnet.ora, tnsnames.ora, 和 protocol.ora文件中的参数,这些参数可以被用做改变设置和TCP包的大小,并且调整这些参数可以影响根本的. 阅读全文
posted @ 2009-02-26 21:24 爱生活,爱编程 阅读(217) 评论(0) 推荐(0) 编辑
摘要: Oracle数据库以其高可靠性、安全性、可兼容性,得到越来越多的企业的青睐。如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的问题,根据笔者经验建议不妨针对以下几个方面加以考虑。 一、分区 根据实际经验,在一个大数据库中,数据空间的绝大多数是被少量的表所占有。为了简化大型数据库的管理,改善应用的查询性能,一般可以使用分区这种手段。所谓分区就是动态表中的记录分离到若干不同的表空间上,使数据在物理上被分割开来,便于维护、备份、恢复、事务及查询性能。当使用的时候可建立一个连接所有分区的视图,使其在逻辑上仍以一个整体出现。 1.建立分区表 Create t... 阅读全文
posted @ 2009-02-26 21:22 爱生活,爱编程 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 前一阵刚给同事做完一个tuning的培训,顺便把以前做过的case重新整理了一下,今天发出来。case的开始是客户开始抱怨一个批量处理的操作现在变得很慢,在开发的帮助下,我们可以在生产环境中轻易的测试这个操作,而且发现响应时间确实是比以前慢了。这一般是个好的开始,因为我们至少知道问题是什么。首先,我们通过session级别的trace,发现这个批处理在执行的过程中存在最多的等待事件是enqueue: PHP code:OVERALLTOTALSFORALLNON-RECURSIVESTATEMENTScallcountcpuelapseddiskquerycurrentrows-------- 阅读全文
posted @ 2009-02-26 21:19 爱生活,爱编程 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 1.选用适合的ORACLE优化器 ORACLE的优化器共有3种: 1.RULE(基于规则) 2.COST(基于成本) 3.CHOOSE(选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性. 如果数据... 阅读全文
posted @ 2009-02-26 21:08 爱生活,爱编程 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 为了提高性能,我们针对Oracle数据库本身提供了的方法或方案进行过不少的尝试,主要包括: 共享服务器模式(MTS) 集群技术(Clustering)RAC 分区 并行处理(主要是并行查询) Oracle提供的这些特性确实是用来进行性能改善的,但我们往往忽略了对自身应用特性的分析,它们是否适合于我们.最近,通过对这方面知识的深入了解,发现我们以前存在一些错误的认识.我觉得有必要,大家一起来改变这种误解. 分析之前,先明确一下我们的应用特性.数据库应用大体可以分为OLAP和OLTP两大类,即:联机事务分析(数据仓库)和联机事务处理(事务应用)我们的应用系统,其应用特性主要是联机事务处理,又包含. 阅读全文
posted @ 2009-02-26 21:07 爱生活,爱编程 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 在过去的十年中, Oracle 已经成为世界上最专业的数据库之一。对于 IT 专家来说,就是要确保利用 Oracle 的强大特性来提高他们公司的生产力。最有效的方法之一是通过 Oracle 调优。它有大量的调整参数和技术来改进你的 Oracle 数据库的性能。 Oracle 调优是一个复杂的主题。关于调优可以写整整一本书,不过,为了改善 Oracle 数据库的性能,有一些基本的概念是每个 Oracle DBA 都应该遵从的。 在这篇简介中,我们将简要地介绍以下的 Oracle 主题: 外部调整:我们应该记住 Oracle 并不是单独运行的。因此我们将查看一下通过调整 Oracle 服务器以得. 阅读全文
posted @ 2009-02-26 21:04 爱生活,爱编程 阅读(192) 评论(0) 推荐(0) 编辑