如何诊断与IO相关的oracle性能诊断问题

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
串级控制系统的性能检测与评价
下载积分:1998
内容提示:串级控制系统的性能检测与评价
文档格式:PDF|
浏览次数:11|
上传日期: 02:04:42|
文档星级:
该用户还上传了这些文档
串级控制系统的性能检测与评价
官方公共微信?天佑老爸?
随笔分类 -Oracle性能诊断
10:13 by Tracy., 417 阅读, ,
最近有尝试做SQL优化、一直不得要领,请逛到这里的高人提供一些优化实例(最好是有优化历程说明),先谢谢了!oracle 的优化器: oracle 有两种优化器:基于规则的优化器(rbo/rule based optimizer)和基于代价的优化器(cbo/cost based optimizer).较典型的问题有: 有时、表明明建有索引,但查询过程显然没有用到相关的索引,导致查询过程耗时漫长,占用资源巨大,问题到底出在哪儿呢?按照以下顺序查找,基本上能发现原因所在。首先,我们要确定数据库运行在何种优化模式下,相应的参数是:optimizer_mode。oracle v7 以来缺省的设臵应是&q
15:32 by Tracy., 339 阅读, ,
===========================================================作者: yangtingkun(http://yangtingkun.itpub.net)发表于:
23:49分类: ORACLE 出处: http://yangtingkun.itpub.net/post/468/20584--------------------------------------------------------------- Oracle物化视图的快速刷新机制是通过物化视图日志完成的。Oracle如何通过一个物化视图日志就可以支持
14:47 by Tracy., 70 阅读, ,
Brian -- Thanks for the question regarding &Partitioning question&, version 8.1.7Submitted on 12-Oct- Central time zoneTom's latest followup | Bookmark | BottomLast updated 8-Oct-You AskedLet's say we have a table of documents with key of doc_id. This table conta
15:21 by Tracy., 71 阅读, ,
Commit Enhancements in Oracle 10g Database Release 2In Oracle 10g Release 2 the COMMIT command has been enhanced with the WRITE clause to give a degree of control over the way redo information is written to the redo logs during the commit operation. This can improve performance, but it should only b
13:44 by Tracy., 277 阅读, ,
Hi Tom, You mentioned this in one of your responses. &&So, a procedure that has been running for 10 hours and finished in your window would dump ALL of its cpu time into your window.&& Could you please clarify if this logic of dumping the time in the snapshot at the end of the procedure
13:39 by Tracy., 1218 阅读, ,
首先,我们结合index_stats得到的索引分析数据看一下,在不同索引列压缩情况下的效果。然后统一总结实验效果。1.创建测试用表t_compress_indexcreate table t_compress_index as select * from all_2.不使用索引压缩技术创建索引sec@secooler& create index idx_t_compress_index on t(owner,object_type,object_name);Index created.sec@secooler& analyze index idx_t_compres
14:04 by Tracy., 129 阅读, ,
现在主流的数据库管理系统中,都支持多个事务同时执行,这样提高了数据库管理系统的运行效率。试想如果只允许一个事务运行,而这个事务又需要很长的时间,那么其他的用户必须一直等待该事务结束,效率何其低下。执行不同的事务虽然可以提高性能,但是有可能会破坏数据的完整性,所以我们必须在性能和数据完整性之间进行权衡。那么什么是并发控制呢?并发控制是数据库管理系统协调多个运行事务的行为。首先了解一下,并发控制中经常遇到的三个问题。 脏读 我们通过一个products表来解释一下什么是脏读,该products表有一列quantity(数量),现在的值为20。假如现在有两个事务T1和T2,它们都是要更新qu...
11:22 by Tracy., 957 阅读, ,
2、显式为主键列建立反向键索引 2.1 反向键索引的原理和用途 我们知道Oracle会自动为表的主键列建立索引,这个默认的索引是普通的B-Tree索引。对于主键值是按顺序(递增或递减)加入的情况,默认的B-Tree索引并不理想。这是因为如果索引列的值具有严格顺序时,随着数据行的插入,索引树的层级增长很快。搜索索引发生的I/O读写次数和索引树的层级数成正比,也就是说,一棵具有5个层级的B-Tree索引,在最终读取到索引数据时最多可能发生多达5次I/O操作。因而,减少索引的层级数是索引性能调整的一个重要方法。 如果索引列的数据以严格的有序的方式插入,那么B-Tree索引树将变成一棵不对称的&quo
15:53 by Tracy., 115 阅读, ,
案例编号: 0005关键词: index range scan, index full scan, out-of_date statistics正文:出问题的SQL:SELECT * FROM ZORYZYZ.VD_TLOWVM_KSLGL WHERE member_id = :1 AND status IN (:2) ORDER BY member_id, id当前的执行计划(index full scan):-----------------------------------------------------------------------------------| Id ...
10:50 by Tracy., 2994 阅读, ,
Index Full Scan reads the whole index, in an ordered manner (i.e. it &walks& the index from the lowest value to the highest value).(Index Fast Full Scan reads the whole index, without bothering about ordering, it just reads all the index leaf blocks using multiblock reads -- similar to a T
15:40 by Tracy., 214 阅读, ,
发现对于REFRESH FAST ON COMMIT物化视图,并不支持标准外连接的写法,而Oracle特有的(+)方式则没有问题。Oracle对于标准外联接的写法支持的并不好,类似的bug已经不是第一次碰到了。SQL& CREATE TABLE T_P (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));表已创建。SQL& CREATE TABLE T_F (ID NUMBER PRIMARY KEY, FID NUMBER);表已创建。SQL& CREATE MATERIALIZED VIEW LOG ON T_P 2 WITH ROWID
16:27 by Tracy., 70 阅读, ,
You AskedTom:create table test( a int);beginfor i in 1..10000 loopinsert into test values (i);set autotrace onselect count(0)Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 ...
08:58 by Tracy., 661 阅读, ,
创建一个带主键的表,和一个触发器,触发器会防止两个或多个会话同事插入相同的值。这个触发器使用DBMS_UTILITY.GET_ HASH_VALUE 来计算主键的散列值,得到一个0~1 073 741 823 之间的数(这也是Oracle 允许我们使用的锁ID 号的范围)。然后使用DBMS_LOCK.REQUEST 根据这个ID 分配一个排他锁(也称独占锁,exclusive lock)。一次只有一个会话能做这个工作。grant execute on dbms_create table demo (x int primary key);create or repla
16:11 by Tracy., 513 阅读, ,
上一篇文章介绍了PCT的概念和优点,本文详细介绍一下PCT的限制。物化视图的PCT特性(一):http://blog.itpub.net/post/468/21406物化视图的分区变化跟踪特性(PCT)具有以下的限制条件:1.物化视图参考的基表中至少有一个是分区的;2.分区表必须是范围分区或复合分区;3.分区键必须由单列组成;4.物化视图必须包含基表的分区列或分区标志;5.如果物化视图包含GROUP BY语句,则分区列或分区标志必须出现在GROUP BY语句中;6.数据修改只能发生在分区表中;7.兼容性设置COMPATIBLE必须在9.0.0.0.0以上;8.物化视图不能参考远端表、视图或外连
16:07 by Tracy., 178 阅读, ,
Oracle的物化视图从9i开始支持了PARTITION CHANGE TRACKING(PCT)功能。本文简单描述一下PCT的概念及PCT的优点。物化视图的PCT特性(二):http://blog.itpub.net/post/468/21639PCT是基于分区的修改跟踪,如果基表进行了分区,Oracle可以知道物化视图中的每条记录会被基表中的哪个或哪几个分区所影响。PCT带来的优点主要体现在两个方面上:刷新和查询重新。当基表发生DROP PARTITION或TRUNCATE PARTITION操作后,物化视图仍然可以执行快速刷新。而且即使不执行快速刷新,Oracle也不会将这个物化视图中所
15:39 by Tracy., 217 阅读, ,
在创建一个其他用户的物化视图时报错,错误信息为:ORA-01031: 权限不足。以前写过几篇文章,介绍物化视图创建所需要的权限:建立物化视图所需权限(一):http://yangtingkun.itpub.net/post/468/50672建立物化视图所需权限(二):http://yangtingkun.itpub.net/post/468/50707建立物化视图所需权限(三):http://yangtingkun.itpub.net/post/468/50838建立物化视图所需权限(四):http://yangtingkun.itpub.net/post/468/51163但是目前碰到的问
10:29 by Tracy., 1531 阅读, ,
上次因为创建索引失败,原因是TEMP临时表空间满,经过测试,索引创建需要的临时表空间大概是索引的大小,所以在执行alter index index_name rebuild online nologging parallel 5语句前,要计算出创建索引需要的临时段的大小。实验如下:SQL& select * from v$BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
09:54 by Tracy., 901 阅读, ,
本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。 一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表损坏了,只能重新生成数据库。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在。select count(*) from dba_indexeswhere tablespace...
16:41 by Tracy., 148 阅读, ,
1. db file scattered read-DB 文件分散读取这种情况通常显示与全表扫描相关的等待。当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。然而这个等待事件不一定意味着性能低下,在某些条件下Oracle 会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO 下Oracle 会进行更为智能的选择,在RBO 下Oracle 更倾向于使用索引。因为全表扫描被置于LRU
16:20 by Tracy., 161 阅读, ,
当会话发布一个读入多个数据块的IO请求时提交该事件。ORACLE会话等待多个连续的数据块(由初始参数DB_FILE_MULTIBLOCK_READ_COUNT指定)从磁盘读入到SGA中。该事件是在全表扫描或索引快速全局扫描时发生的典型事件。初始化参数db_file_multiblock_read_count(MBRC)决定了读取数据块的最大数目,有两种情况会造成多块读取操作被分成几次操作:&& MBRC因子不能跨越整个区,如果一个区包含10个块,MBRC因子=8,那么多块读取会发布两次读取调用,一次8个数据块,一次2个数据块。&& 要读取的多块有,有一部分已在CACHE
16:20 by Tracy., 101 阅读, ,
名称可能造成误导,该事件是单块读取操作产生的等待事件。ORACLE进程需要一个当前不在SGA中的块,该进程会等待从磁盘读入所需数据块到SGA中。当从索引、回滚或撤消段、按ROWID访问的表、重建控制文件、转储数据文件标题(dump)、数据文件标题读取....提交该事件。存在该事件并不一定表示存在性能问题,但是如果该事件的等待时间比其他等待时间多得多,则表明应用程序正在执行大量的索引读取,需要要考虑全表扫描是否更为有效?通过索引访问数据是否合适?如果存在高平均等待时间,该事件可能是由于受到缓慢的IO子系统和拙劣的数据库文件布局的影响。但对系统IO的调整应该在应用程序调整和SQL调整之后进行。如果
15:24 by Tracy., 270 阅读, ,
You AskedHelloI am currently working with Peoplesoft CRM v8One of consultants decided to partitioned the tables using hash partitioning, he also partitioned the indexes locally. Obviously he just showed me how clueless he is making the indexes local to the tables and time has shown I am right, we ha
16:39 by Tracy., 157 阅读, ,
物化视图对于前台数据库使用者来说如同一个实际的表,具有和一般表相同的如select等操作,而其实际上是一个视图,一个由系统实现定期刷新其数据的视图(具体刷新时间在定义物化视图的时候已有定义),使用物化视图更可以实现视图的所有功能,而物化视图却不是在使用时才读取,大大提高了读取速度,特别适用抽取大数据量表某些信息以及数据链连接表使用,但是物化视图占用数据库磁盘空间。具体语法如下:create materialized view [view_name]refresh [fast|complete|force][on [commit|demand] |start with (start_time).
11:12 by Tracy., 394 阅读, ,
一. 10053事件当一个SQL出现性能问题的时候,可以使用SQL_TRACE 或者 10046事件来跟踪SQL. 通过生成的trace来了解SQL的执行过程。 Oracle SQL Trace 和 10046 事件http://blog.csdn.net/tianlesoftware/archive//5857023.aspx Event 10053 执行计划 绑定变量 Bind peekinghttp://blog.csdn.net/tianlesoftware/archive//5544307.aspx Oracle 跟踪事件 set eventh
16:47 by Tracy., 84 阅读, ,
You AskedTom:create table test( a int);beginfor i in 1..10000 loopinsert into test values (i);set autotrace onselect count(0)Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 TABLE ACCESS (FUL
15:27 by Tracy., 84 阅读, ,
begindbms_stats.gather_table_stats(ownname =& USER, tabname =& 'TMS_ROUTE_HEADER');BEGINDBMS_STATS.set_table_stats (ownname =& USER,tabname =& 'TMS_ROUTE_HEADER',numrows =& 100,numblks =&5); END;begindbms_stats.delete_table_stats(ownname =& USER,tabname =&
14:48 by Tracy., 465 阅读, ,
1. 什么是聚簇 \JM=Fy d1=A=: 聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。 Lks)IT ~&|K&&6dt 2. 使用 Oracle 聚簇索引 ,6Yp+ZWR lfc=NAlUDS 聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域。例如,表 BOOKSHELF 和BOOKSHELF_AUTHOR 数据
16:40 by Tracy., 159 阅读, ,
Alex -- Thanks for the question regarding &consistent reads&, version 8.1.6.3Submitted on 26-Jun- Central time zoneTom's latest followup | Bookmark | BottomLast updated 13-Jul-You AskedHiI have been wondering what are consistent gets and db block gets, according to
11:22 by Tracy., 87 阅读, ,
Posted on August 28, 2010 by Carlos Acosta//benefits-and-consequences-of-the-nologging-option/I still find confusion out there about the LOGGING and NOLOGGING clauses when performing DML and DDL operations, the reality is that the NOLOGGING clause will wo
13:56 by Tracy., 3312 阅读, ,
作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息.DBMS_STATS.GATHER_TABLE_STATS的语法如下:DBMS_STATS.GATHER_TABLE_STATS (ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_percent NUMBER, block_sample BOOLEAN, method_opt VARCHAR2, degree NUMBER, granularity VARCHAR2, cascade BOOLEAN, stattab VAR
13:41 by Tracy., 223 阅读, ,
OverviewIntroduced in Oracle9, scalar subqueries allow you to treat the output of a subquery as a column or even an expression within a SELECT statement. It is a query that only selects one column or expression and returns just one row. If the scalar subquery fails to return select any rows, Oracle
13:19 by Tracy., 227 阅读, ,
原文地址/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:You AskedWe are doing performance-testing of SQL-statements in our project. When running explain-plans on the statements, the results are often not realistic due to the fact that we have not loaded the tables with data
16:35 by Tracy., 46 阅读, ,
DECLARE ReturnCode BINARY_INTEGER; BEGIN ReturnCode := DBMS_PROFILER.start_profiler ('Profiler Demo 2'); nocopy_test.test_copy (400, 1); ReturnCode := DBMS_PROFILER.stop_ DBMS_OUTPUT.put_lin...
15:31 by Tracy., 140 阅读, ,
You Asked Tom: I was reading this Oracle magazine /technetwork/issue-archive/2011/11-jul/o40asktom-402616.html &quote& A full index scan reads the index a block at a time, from s...
13:19 by Tracy., 113 阅读, ,
很多时候需要设置会话的SQL_TRACE,以便于分析,简单总结一下设置的方法和适用的情况。 这一篇介绍设置其他会话SQL_TRACE的方法。 设置会话TRACE的方法(一):http://yangtingkun.itpub.net/post/468/519830 Oracle10g新增DBMS_MONITOR包(一):http://yangtingkun.itpub.net/post/468/4...
13:18 by Tracy., 71 阅读, ,
很多时候需要设置会话的SQL_TRACE,以便于分析,简单总结一下设置的方法和适用的情况。 这一篇介绍设置当前会话SQL_TRACE的方法。 DBMS_SESSION包小议(五):http://yangtingkun.itpub.net/post/468/498559 最显而易见的方法设置SQL_TRACE参数: SQL& ALTER SESSION SET SQL_TRACE = TRUE; 会...
13:16 by Tracy., 271 阅读, ,
在10g中,Oracle新增了DBMS_MONITOR包,使得用户可以更加方便的设置TRACE和统计信息。 这一篇介绍TRACE相关的过程。 DBMS_MONITOR包中提供了多种方法来开启、关闭会话或整个实例的TRACE。 除了最常用的通过会话的SID和SERIAL#进行设置的SESSION_TRACE_ENABLE/SESSION_TRACE_DISABLE外,还包括设置数据库实例上所有会话的...
13:14 by Tracy., 145 阅读, ,
除了使用ALTER SESSION设置会话的状态,利用V$SESSION查询会话状态,Oracle还提供了PL/SQL接口DBMS_SESSION来查询和设置会话相关的状态。 描述用来设置TRACE的SET_SQL_TRACE、SESSION_TRACE_ENABLE和SESSION_TRACE_DISABLE过程。 DBMS_SESSION包小议(一):http://yangtingkun.i...
11:18 by Tracy., 135 阅读, ,
You Asked I was a bit surprised to notice in my development environment a couple of months, a large number of sessions that were invoking parallel operations, especially since I made sure to set all ...
16:47 by Tracy., 48 阅读, ,
Adaptive Cursor Sharing in Oracle Database 11g Release 1 DBAs are always encouraging developers to use bind variables, but when bind variables are used against columns containing skewed data they som...
13:41 by Tracy., 736 阅读, ,
Types of Materialized Views The SELECT clause in the materialized view creation statement defines the data that the materialized view is to contain. There are only a few restrictions on what may be s...
14:18 by Tracy., 159 阅读, ,
Oracle 10g includes many PL/SQL enhancements including: PL/SQL Native Compilation FORALL Support for Non-Consecutive Indexes (Sparse Collections) New IEEE Floating-Point Types Improved Overloading Wi...
14:02 by Tracy., 302 阅读, ,
--原表的定义语句, 做在线重定义之前, 记得先把原表定义语句先取出来备用, 可以从toad里取得. ALTER TABLE U_TEST.CARD_TEST DROP PRIMARY KEY CASCADE; DROP TABLE U_TEST.CARD_TEST CASCADE CONSTRAINTS; CREATE TABLE U_TEST.CARD_TEST ( CARD_NO VAR...
13:49 by Tracy., 629 阅读, ,
DBMS_PARALLEL_EXECUTE The DBMS_PARALLEL_EXECUTE package allows a workload associated with a base table to be broken down into smaller chunks which can be run in parallel. This process involves several...
13:28 by Tracy., 62 阅读, ,
Commit Enhancements in Oracle 10g Database Release 2 In Oracle 10g Release 2 the COMMIT command has been enhanced with the WRITE clause to give a degree of control over the way redo information is wri...
13:12 by Tracy., 147 阅读, ,
Partitioning Enhancements in Oracle Database 11g Release 1 This article uses simple examples to describe the partitioning enhancements in Oracle 11g Release 1. Extended Composite Partitioning Interval...
13:00 by Tracy., 114 阅读, ,
Online Table Redefinition Enhancements in Oracle Database 11g Release 1 By default, online table redefinitions no longer invalidate dependent objects (PL/SQL, views, synonyms etc.), provided the redef...
13:48 by Tracy., 73 阅读, ,
从400万行记录的1个分区中进行查询10行记录,为什么不走局部索引? 分区表,从400万行记录中取出10行记录,为什么没有走索引? 目前情况: windows2003系统, 11gR1版本。 1, 设计rece为分区表,其中的gpsdate上建立了list分区, ';对应的分区名是“P_”,这个分区的记录约为400万行。 数据情况如下: SQL& select co...
09:16 by Tracy., 608 阅读, ,
1. 准备知识:ORACLE的逻辑存储管理. ORACLE在逻辑存储上分4个粒度:表空间,段,区和块. 1.1 块:是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行. 1.2 区:由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表PM_USER...
14:01 by Tracy., 237 阅读, ,
关于分区表和分区索引(About Partitioned Tables and Indexes) 对于10gR2而言,基本上可以分成几类: v Range(范围)分区 v Hash(哈希)分区 v List(列表)分区 v 以及组合分区:Range-Hash,Range-List。 对于表而言(常规意义上的堆组织表),上述分区形式都可以应用(甚至可以对某个分区指定compress属性),只不过分区...
13:48 by Tracy., 148 阅读, ,
--帐号信息表 CREATE TABLE TB_U_ACCOUNT ( ACCOUNT_ID NUMBER(20), ACCOUNT_BALANCE_TOTAL NUMBER(13,2), ACCOUNT_BALANCE NUMBER(13,2), DAY_MONEY NUMBER(13,2), MONTH_MONEY NUMBER(13,2), ADD_DAY VARCHAR2(8), ADD_...
10:39 by Tracy., 179 阅读, ,
分区表,每次查询取出1%的记录,为什么没有走索引? 目前情况: windows2003系统, 11gR1版本。 经常执行的是类似:select * from rece where gpsdate &= ... and gpsdate&=... and device_number=... ; 的查询,即:查询某个设备号的设备,在某些天内的记录。而rece表里共有3亿条记录。 所以, 1, 设计re...
21:45 by Tracy., 80 阅读, ,
1.既然NULL是可以进复合索引的,在我们需要对NULL进行索引时,就可以构造一个“伪复合索引”:CREATE INDEX my_index ON my_table(my_column,0);后面这个零就是加入的伪列。这样以后在有 my_column IS NULL 的条件就可以利用索引了(当然最终使用与否还得由CBO决定)。2.不想索引的行,即使不是NULL, 也可用函数把它剔除。假设有status_id列,里面有0:未处理,1:已处理 两种状态,我们关心的仅仅是0的行,处理完就会改成1. 这样表中0的行仅仅是少数,大部分是1的行,数据量多了BTREE索引的维护就有开销。这时可以建立这样的索
10:54 by Tracy., 114 阅读, ,
受楼下老大的NULL贴启发,讲两个NULL与索引的小技巧 1.既然NULL是可以进复合索引的,在我们需要对NULL进行索引时,就可以构造一个“伪复合索引”: CREATE INDEX my_index ON my_table(my_column,0); 后面这个零就是加入的伪列。这样以后在有 my_column IS NULL 的条件就可以利用索引了(当然最终使用与否还得由CBO决定)。 2.不...
11:33 by Tracy., 188 阅读, ,
一、创建示例表 CREATE TABLE T_FULLTEXT_DEMO(
ID NUMBER NOT NULL,
TITLE VARCHAR2(100) NULL,
REMARK VARCHAR2(200) NULL,
FILE_NAME VARCHAR2(200) NULL,
CONSTRAINT T_FULLTEXT_DEMO_PK PRIMARY KEY ( ID )); 二、对...
17:19 by Tracy., 107 阅读, ,
As of Oracle Database 10g, whenever system statistics or object statistics are gathered through the package dbms_stats, instead of simply overwriting current statistics with the new statistics, the cu...
15:01 by Tracy., 250 阅读, ,
直方图有两种类别,等频直方图与等高直方图。 默认的,如果一个倾斜列上的唯一值超过了254个,那么ORACLE会对此列建立等高直方图,否则建立等频直方图。 通过如下方式,建立表TAB,更新字段B,让列B产生倾斜。并在B列上创建索引。 SQL& spool d:\hist.txt SQL& create table tab (a number, b number); 表已创建。 SQL& SQL& ...
13:09 by Tracy., 328 阅读, ,
Oracle 10g中的SQL跟踪新方法 1. 先确定需要跟踪的Session或者Client select * from v$session
--会话级别 可以设置identifier方便查询跟踪文件 alter session set TRACEFILE_IDENTIFIER = 'something_here'; begin --当前自己的Session可以用: --EXECUTE DBM...
10:53 by Tracy., 59 阅读, ,
1 前言... 2 2 总纲... 2 3 降龙十八掌... 3 第一掌 避免对列的操作... 3 第二掌 避免不必要的类型转换... 4 第三掌 增加查询的范围限制... 4 第四掌 尽量去掉&IN&、&OR& 4 第五掌 尽量去掉 &&&& 5 第六掌 去掉Where子句中的IS NULL和IS NOT NULL. 5 第七掌 索引提高数据分布不均匀时查询效率... 5 第八掌 利用HINT强...
11:33 by Tracy., 5907 阅读, ,
不使用Oracle text功能,也有很多方法可以在Oracle数据库中搜索文本.可以使用标准的INSTR函数和LIKE操作符实现。
有很多时候,使用instr和like是很理想的, 特别是搜索仅跨越很小的表的时候.然而通过这些文本定位的方法将导致全表扫描,对资源来说消耗比较昂贵,而且实现的搜索功能也非常有限,因此对海量的文本数据进行搜索时,建议使用oralce提供的全文检索功能 建立全文检索的...
15:25 by Tracy., 143 阅读, ,
联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line...
09:07 by Tracy., 265 阅读, ,
当系统中的某些表存在高度不均匀的数据分布时,使用柱状图能够产生更好的选择性评估,从而产生更加优化的执行计划。柱状图提供一种有效和简捷的方法来呈现数据的分布情况。下面通过一个具体的例子解释柱状图的使用。SQL& create table tab (a number, b number);Table created.SQL& beginfor i in 1..10000 loopinser...
09:03 by Tracy., 499 阅读, ,
ORACLE 中dbms_stats的使用 dbms_stats能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。execdbms_stats.gather_schema_stats(ownname=&'SCOTT',options=&'GATHERAUTO',estimate_percent=&dbms_stats.au...
08:56 by Tracy., 788 阅读, ,
逻辑上:   Single column 单行索引  Concatenated 多行索引  Unique 唯一索引  NonUnique 非唯一索引  Function-based函数索引  Domain 域索引物理上:  Partitioned 分区索引  NonPartitioned 非分区索引  B-tree:  Normal 正常型B树  Rever Key 反转型B树  Bitmap 位...
11:36 by Tracy., 775 阅读, ,
在部署 J2EE 应用程序中最耗时的操作之一就要数建立到数据库的连接了。应用程序服务器通常提供连接高速缓存或者连接池以尽量减小这一任务所带来的开销。(尽管术语“连接高速缓存”和“连接池”在 JDBC 中有不同的含义,这里我们将借鉴这些术语。) 在 Oracle Application Server Containers for J2EE 10g (O...
14:13 by Tracy., 711 阅读, ,
网上转的,比较简单的介绍.方便时候可以参考一下大家.在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法:1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHER...
10:14 by Tracy., 1961 阅读, ,
在实际使用中,很少有文章介绍如何看执行计划的.本文希望能抛砖引玉,给大家介绍下这方面的内容。首先,从oracle10g开始,oracle开始提供一个新功能dbms_xplan.display_cursor,我们不需要考虑看什么plan_table还是v$sql_plan了。当然你使用这个功能你需要有这些视图“v$session”, “v$sql”, ...
14:18 by Tracy., 93 阅读, ,
oracle索引整理 一,oracle的索引陷阱一个表中有几百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这主要可能是oracle的索引限制造成的。 oracle的索引有一些索引限制,在这些索引限制发生的情况下,即使已经加了索引,oracle还是会执行一次全表扫描,查询的性能不会比不加索引有所提高,反而可能由于数据库维护索引的系统开销造成性能更差。 下面是一些常见的索引限制问题。1...
11:48 by Tracy., 235 阅读, ,
Running a query with profile information collectedIn TOAD, use this template to run your query:alter session set sql_trace=alter session set tracefile_identifier='my_name_here';ALTER SESSION SET...

我要回帖

更多关于 io性能 的文章

 

随机推荐