Why NOT Use My Index
为什么定义了索引,执行时却没有用到? 可能的几种情况:1.统计信息错误或者不完全。尝试重建统计信息或者调整统计信息采样比率(默认为10%)后再试试。2.10g以后的版本,optimizer_mode默认为ALL_ROWS,即采用CBO的方式。如果optimizer_mode不为ALL_ROWS,就要看看,你的SQL是不是通过RBO的方法执行的。SQL> show parameter optimizer_modeNAME &n
内存比硬盘快多少?
内存的访问速度比硬盘快,这是毋庸置疑的,但是到底快多少?通常的说法是:内存访问速度是纳秒级(10的-9次方),硬盘的访问速度是微秒级(10的-3次方)。找到一个稍微科学点的测试数据,如下图要对比内存和硬盘的速度,要分为两种请款对比:1.顺序访问:这种情况下,内存访问速度仅仅是硬盘访问速度的6~7倍(358.2M / 53.2M = 6.7)2.随机访问:这种情况下,内存访问速
NO_EXPAND Hint性能优化一例
耗时较长的SQLselect msn.serial_number, msi.description from mtl_system_items_tl msi , mtl_serial_numbers msn where ( UPPER(SERIAL_NUMBER) LIKE :1 AND (SERIAL_NUMBER LIKE :2 OR SERIAL_NUMBER LIKE :3 OR SERIAL_NUMBER LIKE :4 OR SERIAL_NUMBER LIKE :5)) AND ( msn.current_organization_id = msi.organization_id and msn.inventory_item_id = msi.inventory_item_id and msn.inventory_item_id = nvl( :6, msn.inventory_item_id) /* and msn.current_organization_i
Oracle Applications Performance Coding Standards
Performance Coding Standards by Abhijit Ray
"ROWNUM = 1"会使SQL的性能更快?
SQL中加入ROWNUM = 1会让性能有所提升么?有可能,但也不全是。遇到了一个Case,ROWNUM = 1的加入并没有像想象的那样让性能有所提升。背景:PL/SQL的代码,用下边的Query来检查符合条件的记录是否存在。SELECT \'X\' FROM MTL_MATERIAL_TRANSACTIONS A,MTL_TRANSACTION_TYPES B WHERE A.ORGANIZATION_ID = :b1 AND B.TRANSACTION_TYPE_ID = A.TRANSACTION_TYPE_ID AND B.TRANSACTION_ACTION_ID = A.TRANSACTION_ACTION_ID AND ROWNUM = 1
FND: Debug Log Enabled引起的性能问题
客户遇到一性能问题,某EBS功能之前性能还可以接受,但最近突然发现性能非常差。从TKRPOF看到,下边SQL语句执行了上千次,SELECT NVL( SUBSTR( VALUE, 1, INSTR( VALUE, \',\')-1), VALUE) FROM V$PARAMETER WHERE NAME = \'utl_file_dir\'这条语句基本是写日志前的读取可写日志的目录,然后检查各项Debug Profile,最终查到客户环境的Profile:"FND: Debug Log Enabled"处于打开的状态,让客户关闭后,性能恢复正常
AWR (Automatic Workload Repository) Report
10g引入AWR(Automatic Workload Repository),一个新的性能采集和分析工具。(10g以前使用statspack)AWR可以收集的信息有:Wait events used to identify performance problems.Time model statistics indicating the amount of DB time associated with a process from the V$SESS_TIME_MODEL and V$SYS_TIME_MODEL views.Active Session History (ASH) statistics from the V$ACTIVE_SESSION_HISTORY view.Some system and session statistics from the V$SYSSTAT and V$SESSTAT views.Object usage stati
[Index]组合索引(Composite Index)中多个字段的顺序
一个表中有三个字段,XX,YY,ZZ,如果要建立给这三个字段建组合索引(Composite Index),组合索引中字段的顺序应该遵循怎样一个原则。一般的原则:越离散的字段越靠前。哪个列可以降低索引的扫描成本就放在前面。比如:下位三个字段的离散情况XX:2YY:1000ZZ:50000那么建立索引的顺序应该为:ZZ,YY,XXCREATE INDEX t_idx ON t (zz,yy,xx);但是如果where条件中,三个字段的条件都是通过"="
PL/SQL Profiler - DBMS_PROFILER
之前写过EBS下的PL/SQL Profiling 调试的文章,PL/SQL Profiling用于调试EBS下PL/SQL(如:Procedure,Function)的性能情况。今天抛开EBS这个特定的产品,写一下如何使用DBMS_PROFILER这个Package,如何获取PL/SQL中各段代码的执行时间。DBMS_PROFILER的官方介绍:http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_profil.htmDBMS_PROFILER Installation一般情况下DBMS_PROFILER的Package和Table都已经安装,如果你的数据库里没有D