ORACLE学习笔记--性能优化四
22. SQL语句的优化方法[@more@]<1> /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=“CCBZZP“;<2>. /*+FIRST_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如:SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=“CCBZZP“;<3>. /*+CHOOSE*/表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最
ORACLE学习笔记--性能优化一
1. 查询正在执行语句的执行计划(也就是实际语句执行计划)[@more@]select * from v$sql_plan where hash_value = (select sql_hash_value from v$session where sid = 1111);其中id和parent_id表示了执行数的结构,数值最大的为最先执行比如ID PARENT_ID-------------01 02 13 24 35 46 3则执行计划树为 0 1 2 3 6 4 52.如何设置
Oracle笔记-优化策略与工具
第 10 章 优化策略与工具[@more@] 10.1 标识问题 10.2 我的方法 10.3 绑定变量与分析(再次) 不使用绑定变量将增加语句分析,除了消耗CPU时间外,还会增加字典高速缓存上的闩锁。 显示会话等待的事件:V$SESSION_EVENT.具体事件名和含义可以参考Oracle Reference Manual的附录Oracle Wait Events. CURSOR_SHARING CURSOR_SHARING参数缺省为EXACT,若指定为FORCE,则优化器可能将语句中所有的常数转换为绑定变量,虽然减少了语句分析,但是也会带来如下副作用: 优化器可供利用的信息可能减少,从而改变执行路径,
使用智能优化器提高Oracle的性能极限
消耗在准备新的SQL语句的时间是Oracle SQL语句执行时间的最重要的组成部分。但是通过理解Oracle内部产生执行计划的机制,你能够控制Oracle花费在评估连接顺序的时间数量,并且能在大体上提高查询性能。[@more@] 准备执行SQL语句 当SQL语句进入Oracle的库缓存后,在该语句准备执行之前,将执行下列步骤: 1) 语法检查:检查SQL语句拼写是否正确和词序。 2) 语义分析:核实所有的与数据字典不一致的表和列的名字。 3) 轮廓存储检查:检查数据字典,以确定该SQL语句的轮廓是否已经存在。 4) 生成执行
ORACLE数据库体系框架介绍及SQL语句性能探讨
“我们公司主要的业务是软件开发和系统集成,而这两个方面都会涉及到数据库软件,公司大多数的产品和工作都和ORACLE数据库有关;[@more@] 因此,可以说我们宏智科技在ORACLE数据库应用方面是高手云集、藏龙卧虎!下面,我本着“鲁班门前弄大斧”的动机和“成功就是把犯错误的速度提高一倍”的精神,战战兢兢地写下了一些个人认为重要的观点和一点点个人的体会,希望大家不要吝啬给我成长的机会,多提意见。 摘要:基于数据库的业务系统的核心是数据库和数据。理解ORACLE数据的体系框架有助于我们成功开发基于数据库的业务系统。通过增加
查询语句(SELECT)的优化
这篇文章是基于Informix数据库写的。希望对大家有用。[@more@] 程序设计中的一个著名定律是20%的代码用去了80%的时间,在数据库应用程序中也同样如此。数据库应用程序的优化通常可分为两个方面:源代码的优化和SQL语句的优化。源代码的优化在时间成本和风险上代价很高;另一方面,源代码的优化对数据库系统性能的提升收效有限。 许多程序员认为查询优化是DBMS(数据库管理系统)的任务,与程序员所编写的SQL语句关系不大,这是错误的。一个好的查询计划往往可以使程序性能提高数十倍。查询计划是用户所提交的SQL语句的集合,查
Oracle数据库中大型表查询优化的研究
摘 要:对海量数据进行访问查询时,常常遇到系统响应时间过长,占用系统资源过多的问题。本文结合实例着重对Oracle数据库中的查询优化进行了研究,测试结果表明采用的方法是很有效的,大大缩短了测试用例表的响应时间,最后对海量数据的优化方法提出了实用性的建议。[@more@] 关键词:海量数据;Oracle数据库;查询优化;数据查询 1 引 言 在直升机飞行地面数据处理平台中,需要查询历史飞行数据来进行飞行状态的模拟及其飞行事故的分析,从而对当前飞机状态进行评判。其数据量非常巨大。如何对其进行快速访问,提高系统
ORACLE索引与高性能SQL介绍
什么是索引 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;[@more@] Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引; 索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。 使用索引的目的 加快查询速度 减少I/O操作 消除磁盘排序 何时使用索引 查询返回的记录数 排序表<40% 非排序表 <7% 表的碎片较多(频繁增加、删除) 索引的种类
Oracle 数据库碎片整理
我们知道,oracle作为一种大型数据库,广泛应用于金融、邮电、电力、民航等数据吞吐量巨大,计算机网络广泛普及的重要部门。[@more@]对于系统管理员来讲,如何保证网络稳定运行,如何提高数据库性能,使其更加安全高效,就显得尤为重要。作为影响数据库性能的一大因素--数据库碎片,应当引起dba的足够重视,及时发现并整理碎片乃是dba一项基本维护内容。---- 1、碎片是如何产生的 ---- 当生成一个数据库时,它会分成称为表空间(tablespace)的多个逻辑段(segment),如系统(system)表空间,临时(temporary)表空间等。一个表空间可以包
oracle SQL性能优化大总结
oracle SQL性能优化大总结[@more@](1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.(2) WHERE子句中的连接顺序.:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前
10046 Event漫步
我们知道,Oracle提供了Internal Events以便Oracle Support人员利用其对Oracle的内部行为进行一些更为深入细致的记录与跟踪,从而分析查找并解决Oracle用户所遇到的棘手问题。[@more@]对于大部分的Internal Events,Oracle是没有官方文档加以阐述的,不过,这些Events中有几个是被公认为非常重要并被广泛研究和采用的。这其中,最重要的就是在进行Sql Tuning时常利用的10046 event。如果你对oracle性能调优很感兴趣或者比较专长,那么你对oracle的10046事件一定不会陌生。10046 event是对oracle进行系统性能分析时一个最重要的手段。当激活
一次 Kill 多个进程
ps -efww|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9 [@more@] 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令: “ps -efww”是Red Hat 7.0里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep LOCAL=NO”的输入。 “grep LOCAL=NO”的输出结果是,所有含有关键字“LOCAL=NO”的进程,这是Oracle数据库中远程连接进程的共同特点。 “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。 “cut -c 9-15”是截取
数据库查询中的连接
在关系代数中,连接运算是由一个笛卡尔积运算和一个选取运算构成的。连接的全部意义在于在水平方向上合并两个数据集合(通常是表)。下面是几种常用的连接类型:[@more@]连接类型定义图示例子内连接只连接匹配的行select A.c1,B.c2 from A join B on A.c3 = B.c3;左外连接包含左边表的全部行(不管右边的表中是否存在与它们匹配的行)以及右边表中全部匹配的行select A.c1,B.c2 from A left join B on A.c3 = B.c3;右外连接包含右边表的全部行(不管左边的表中是否存在与它们匹配的行)以及左边表中全部匹配的行select A.c1,B.c2 from A r
Oracle数据类型
在ORACLE8中定义了:标量(Scalar)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,[@more@]标量(Scalar) 标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。 它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。 数字, 它有三种基本类型:NUMBER、PLS_INTEGER和BINARY_INTENER。 NUMBER可以描述整数或实数,而PLS_INTEGER和BINARY_INTENER只能描述整数。 NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它 转换成为二进制进行运算的。它的定义方式是NUMBER(P,S),P是精度,最大38
pl/sql 异常处理的概念和术语
pl/sql 提供了强大而灵活的手段来捕捉和处理程序产生的异常,从而使 oracle 的用户远离一些令人烦恼的 bug 。[@more@] pl/sql 异常处理的概念和术语 在 oracle 中所有的错误都被认为是不应该发生的异常。一个异常可能是以下 3 种情况的一种: u 由系统产生的错误(“ out of memory ”或“ duplicate value in index ”) u 用户行为导致的错误 u 应用程序给用户的一个警告 pl/sql 用一种异常句柄的结构来捕捉和响应错误。正是有了异常句柄的存在,我们能很方便的分离异常处理代码与可执
PL/SQL复合数据类型
PL/SQL有两种复合数据结构:记录和集合。记录由不同的域组成,集合由不同的元素组成。在本文中我们将讨论记录和集合的类型、怎样定义和使用记录和集合以及使用正确的循环控制。[@more@][Ref: http://www.yesky.com/20020819/1625866.shtml ]PL/SQL 记录 记录是PL/SQL的一种复合数据结构,scalar数据类型和其他数据类型只是简单的在包一级进行预定义,但复合数据类型在使用前必须被定义,记录之所以被称为复合数据类型是因为他由域这种由数据元素的逻辑组所组成。域可以是scalar数据类型或其他记录类型,它与c语言中的结构相似,记录也可
RESTRICT_REFERENCES的意思
RESTRICT_REFERENCES,这个PRAGMA比较复杂,从字面上也看不到什么。[@more@] 总的来说,它是一个程序辅助检验码,检查子程序的纯度(PURITY),帮助检验子程序是否有违反规则的地方。一般用在函数上,但当函数调用过程时,也要作相应的设置检查。这是为了避免当在DML语句上调用函数时正常执行不至于产生错误。 语法,PRAGMA RESTRICT_REFERENCES(function_name | default , )RNDS, WNDS, RNPS, WNPS) | , TRUST); RNDS,WNDS,RNPS,WNPS可以同时指定。但当TRUST指定是,其它的被忽略。 DEFAUT是指作用在该程序包上的所有子
基本完成open suse linux 下的oracle 10g安装
Oracle10gR2 on SUSE Linux 10安装http://www.novell.com/products/server/oracle/oracle10g_install.html[@more@]系统要求:内存:推荐1GSwap分区:设为内存的2倍/tmp磁盘空间:400MB以上磁盘空间:软件3.5G 数据1.2G所需软件:SUSE Linux10 for x86Oracle database 10gR2 for linux32Orarun-1.8-109.15.i586.rpm软件包,可以从http://ftp.novell.com/partners/oracle/sels-9下载安装步骤:1、安装SUSE安装SUSE一定确保安装“C/C++Compiler and Tools”软件包。# gcc –version 查看是否安装该软件包2、安装所需软件包安装orarun软件包#r
【超强 】世界美臀、美臀、美臀~大赛,绝对没 见过 看了就喷血 已经更新 !!
世界美臀、美臀、美臀~大赛,绝对没 见过 看了就喷血 已经更新 !![@more@]更多精彩就在:beautiful.rar不要忘了顶啊!!!!!!!!!
oracle同时向多表插入数据
阅读提示:本文简单给出了在oracle中使用All、First语句实现向多表插入数据的操作,供大家参考![@more@]在Oracle操作过程中经常会遇到同时向多个不同的表插入数据,此时用该语句就非常合适。All表示非短路运算,即满足了第一个条件也得向下执行查看是否满足其它条件,而First是短路运算找到合适条件就不向下进行。INSERT ALLWHEN prod_category=’B’ THENINTO book_sales(prod_id,cust_id,qty_sold,amt_sold)VALUES(product_id,customer_id,sale_qty,sale_price)WHEN prod_category=’V’ THENINTO video_sales(prod_id,cust_id,qty_sol