Oracle 优化
常飞梦
10年以上工作经验,8年以数据库管理、开发经验,对数据库优化和架构有比较深的了解。
展开
-
HASH JOIN ,MERGE JOIN ,NESTED LOOP用法效率比较
概述:NESTED LOOP:对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(大于1 万不适合),要把返回子集较小表的作为外表(CBO 默认外表是驱动表),而且在内表的连接字段上一定要有索引。当然也可以用ORDERED 提示来改变CBO默认的驱动表,使用USE_NL原创 2012-12-19 17:56:06 · 13276 阅读 · 0 评论 -
Oracle 监控索引使用
Oracle提供一个监控索引的方法,来确定索引是否被使用。如果索引没有被使用,就可以删除它们以减少不必要的语句的开销。因为表上的大量不必要的索引可能会降低DML语句的性能,给数据库性能产生压力。所以生产环境上,以根据业务增长情况定期监控、分析数据库索引的使用,特别是一些大表上的索引,提升数据库事务提交的性能。 --查看表上的索引SQL> Selectindex_name,table_n原创 2013-08-20 15:22:13 · 1485 阅读 · 0 评论 -
FAQ Collection-性能调整
[Q]如何设置自动跟踪[A]用syst登录 执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建计划表 执行$ORACLE_HOME/sqlplus/admin/plustrce.sql创建plustrace角色 如果想计划表让每个用户都能使用,则 SQL>create public synonym plan_table fo转载 2013-02-18 11:20:44 · 805 阅读 · 0 评论 -
保持Oracle数据库的优良性能的几种办法
Oracle数据库以其高可靠性、安全性、可兼容性,得到越来越多的企业的青睐。如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的问题,根据笔者经验建议不妨针对以下几个方面加以考虑。一、分区根据实际经验,在一个大数据库中,数据空间的绝大多数是被少量的表所占有。为了简化大型数据库的管理,改善应用的查询性能,一般可以使用分区这种手段。所谓分区就是动态表中的记录分离到若干不同的表空间上原创 2013-02-18 11:20:03 · 815 阅读 · 0 评论 -
Oracle表碎片起因及解决办法
今天发现在一个SQL查询用不到索引,classid是建了索引的,如下:select * from infobase where classid in(10001,10002,10003,10004,10005);奇怪的发现在classid in(10001,10002)的值两以上就用不索引,两个以下就可以用到,开始怀疑是索引有问题,于是就重建下了下classid上的索引还是不行。从网上找到原创 2013-02-18 11:19:22 · 969 阅读 · 0 评论 -
Oracle 10g数据库中如何分析响应时间
在Oracle10g中,以前版本中比较难于获取的响应时间数据将会变得非常容易获取。在以前看来,为了尽量获得数据库的最佳性能,Oracle的DBA们和性能分析专家一直很困难获得系统以及用户会话活动的一致的响应时间数据。DBA们面临的问题一直以来包括两个方面:第一个方面是准确定位数据库或者用户会话究竟在哪里消耗了时间;第二个方面就是确定用户体验的客观性质。在数据库中产生所有可能的行为和转载 2013-01-28 10:04:22 · 2042 阅读 · 0 评论 -
oracle几个优化有用的视图
目的:不要死记硬背script,深入理解view的含义,才能自如运用它们。包括:V$SYSTEM_EVENT/ V$SESSION_EVENT/ V$SESSION_WAIT / V$WAITSTAThttp://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/sqlviews.htm#17389V$SYST原创 2013-01-25 17:08:03 · 2467 阅读 · 0 评论 -
Bitmap和B-tree索引性能及用法测试
1.分别给出一个B-tree索引针对全表扫描性能高和低的例子。--查看数据分布量SQL> select count(1) from t; COUNT(1)---------- 3199936 SQL> select owner,count(1) from t group by rollup(owner) order by count(1) desc;原创 2013-01-06 08:53:52 · 1351 阅读 · 0 评论 -
比较全文索引和传统的模糊查询的性能
--查看表数据的内容和分布SQL> select count(*) from members; COUNT(*)---------- 345567 SQL> CREATE INDEX ct_ind ON members(member_name) INDEXTYPE IS CTXSYS.CONTEXT;索引已创建。实验1:全文索引性能差于模糊查原创 2013-01-06 12:25:18 · 5634 阅读 · 0 评论 -
oracle Text 全文检索功能对中文分词的支持情况
下面例子在XE中测试通过。准备工作:CREATE TABLE issues ( ID NUMBER, summary VARCHAR(120), description CLOB, author VARCHAR(80), ot_version VARCHAR(10));IN原创 2013-01-06 09:49:48 · 1690 阅读 · 0 评论 -
SQL优化一则:CBO查询SQL一次比一次慢
问题:今天在开发的新上线一个功能后,下面SQL消耗了大量的CPU,数据库处一度处于满负荷进行,使用率达到100%.赶紧kill掉了正进行的SQL,以免对其它业务产生影响。通过测试,发现一个很奇怪的问题,SQL在第一次执行时会很快,在连续执行几次后,一次比一次的慢。甚至到最后一直挂起在那,产生等待。当停掉后,过会(10分钟左右)再执行,第一次又会变快,如果再连接执行几次,又会出现同样的慢原创 2012-12-20 16:57:17 · 1790 阅读 · 0 评论 -
SQL优化一则:灵活运用字段的选择性
概念: 优化策略:字段选择性 选择性较低索引 可能带来的性能问题索引选择性=索引列唯一值/表记录数;选择性越高索引检索价值越高,消耗系统资源越少;选择性越低索引检索价值越低,消耗系统资源越多;查询条件含有多个字段时,不要在选择性很低字段上创建索引可通过创建组合索引来增强低字段选择性和避免选择性很低字段创建索引带来副作用;尽量减少possible_keys,正确索引会提高sql查询速度,过多索引原创 2016-03-18 11:35:52 · 3058 阅读 · 1 评论