- 浏览: 1183358 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (361)
- java综合 (33)
- 项目管理 (10)
- 工作流 (6)
- spring (11)
- hibenate (17)
- struts (0)
- javascript,html,css,ajax,jquery (11)
- IDE (9)
- 生活 (0)
- 工作 (0)
- 杂记 (1)
- 数据库 (96)
- 服务器 (5)
- 可视编辑 (0)
- freemarker (6)
- 操作系统 windows (13)
- web页面 (6)
- jms (15)
- 调优 (4)
- 测试和bug管理 (2)
- 原理 (1)
- 項目-atf (17)
- 安全 (3)
- xml (4)
- 操作系统 liunx (21)
- 网络 (22)
- office (11)
- 设计 (2)
- 软件 (1)
- 数据库 mysql (6)
- 胖客户端-flex (1)
- 正则 (9)
- oracle- liunx (3)
- sql2000 (2)
- 模式 (1)
- 虚拟机 (2)
- jstl (2)
- 版本控制 打包工具 (0)
- AOP (1)
- demo (1)
- 小软件 (2)
- 感恩 (1)
- iphone 4 (1)
- 反欺诈业务经验整理 (0)
最新评论
-
sea0108:
mark
java内存模型 -
XingShiYiShi:
方便把:testPNR();具体实现发出来吗?谢谢
用正则表达式解析 航信的电子客票和pnr报文 -
wh359126613:
如果js和webservice不在同一个服务器上,有跨域问题如 ...
使用javascript调用webservice示例 -
雨飛雁舞:
...
oracle 动态性能(V$)视图 -
ouyang1224:
好东西
oracle 动态性能(V$)视图
一次,在进行WEB页面上进行历史数据文件检查时,发现数据库访问及其慢,原先只需要几分钟的查询,现在几十分钟都不能搞定,
并且在查询阶段,数据库服务器的CPU负荷暴增
Oracle服务的CPU使用率接近50%,说明数据库可能问题!
首先,排除这个功能模块本身的问题,因为在完成这个功能模块时,经过了好几次测试,每次查询耗时都在6,7分钟左右,
东海健康系统中总共有接近4000个通道,算下来每个通道平均只耗时200ms上下,为了保险起见,我修改了JSP页面,对
单个通道的历史文件检查进行了耗时计算,结果显示:
一个简单的查询居然耗时6秒,绝对有问题!
确定了范围,找到该功能模块,把数据库查询SQL语句样例提取出来
select * from bhis_datafile where channelid = 585 and starttime >= to_date('20060901', 'yyyymmdd') and starttime < to_date('20061001', 'yyyymmdd') order by filename
这句SQL首先在本地运行,由于本地只有07年以后的数据,所以把时间范围调整了一下:
select * from bhis_datafile where channelid = 585 and starttime >= to_date('20070301', 'yyyymmdd') and starttime < to_date('20070401', 'yyyymmdd') order by filename
一开始感觉是order by的问题,把order by去掉后,
在PL/SQL Developer中运行该句,发觉用时才100ms左右
然后把这句话放到东海那边运行,发现也才100ms
这时候以为问题解决了,可我抱着试试看的想法,把时间调整回06年时,发觉还是很慢,差不多6,7秒的样子,没办法,按F5,一看发现有问题
Oracle数据库在查询该表时并没有使用到index索引,但是索引应该是有的,查看表结构
表索引是存在的,于是,汪洋调整了一下语句
select /*+ rule */* from bhis_datafile where channelid = 585 and starttime >= to_date('20060901', 'yyyymmdd') and starttime < to_date('20061001', 'yyyymmdd') order by filename
基于规则的查询优化。
select /*+ index(bhis_datafile, SYS_C005965) */* from bhis_datafile where channelid = 585 and starttime >= to_date('20060901', 'yyyymmdd') and starttime < to_date('20061001', 'yyyymmdd') order by filename
基于索引的查询优化
select /*+ first_rows*/* from bhis_datafile where channelid = 585 and starttime >= to_date('20060901', 'yyyymmdd') and starttime < to_date('20061001', 'yyyymmdd') order by filename
优先返回第一行查询结果
Oracle查询语句优化的文档:
http://192.168.1.86/oracle920doc/server.920/a96533/hintsref.htm#4781
都运行了一遍,发觉index索引存在,并且查询速度很快,100ms左右,和07年的是一样的,一旦把/* */中的设置去除,就变得很慢很慢
但问题是07年度的数据是没有这种问题的,只有06年有,奇怪!
问题是找到了,但为什么会发生这种情况呢,暂时无法得知,先不管,把问题解决再说。
这时候就只有把死马当活马医了:
首先:执行alter index SYS_C005965 rebuild,重建索引
但完成后发觉查询速度反倒比以前慢了。。。。
随后:执行alter index SYS_C005965 compute statistics,对该索引重新计算统计信息
完成后,比前面稍快些,但还是查询一次耗时将近4,5秒
最后:执行analyze table bhis_datafile ESTIMATE statistics,对该表进行统计信息评估
OK,这句执行完,数据库恢复正常,查询速度恢复到100ms一次,完全正常,按F5查看,发觉index索引被使用上了。
最后,问题总算是解决了,但为什么会发生这种奇怪的现象,还有待近一步研究。
发表评论
-
并发行级锁超2秒报警监控sql
2010-07-20 16:18 1872并发行级锁超2秒报警监控sql -
数据设计规范v
2010-06-22 19:47 0数据设计规范v -
Oracle 有趣排序包括那些
2010-06-20 16:51 1396按拼音排序 select * from table ... -
Oracle sql 性能优化调整
2010-06-20 16:15 1360Oracle sql ... -
Delete、Drop、Truncate的比较(转)
2010-05-31 13:39 1439Delete、Drop、Truncate的比较 关键字: d ... -
Oracle误操作解决方案(转)
2010-05-31 13:35 1360Oracle误操作解决方案 文章分类:数据库 一.误删除数 ... -
一个递归调用的存储过程
2010-04-19 01:51 1802一个递归调用的存储过程 -
oracle index学习总结
2009-12-08 10:44 19580oracle index 1.index需要储存空间 ... -
Jdbc 和hibernate
2009-11-16 23:38 1836Jdbc 和hibernate 一、Jdbc是java ... -
去掉 powerDesigner 中表设计时的 name和code联动的功能
2009-11-16 17:04 3440去掉 powerDesigner 中表设计时的 name和co ... -
RMAN配置及备份与恢复练习
2009-09-27 18:06 16001.创建表空间SQL>create tablespace ... -
误删除数据后怎么立即恢复(不考虑全库备份和利用归档日志)
2009-09-27 18:01 3353要达到删除数据,有以下几种方式都可以:1、delete2、dr ... -
IMP数据到指定的表空间
2009-09-27 12:47 9061IMP数据到指定的表空间 一直以来,我都认为只要指定用户的默 ... -
ORACLE UPDATE 语句语法与性能分析
2009-09-27 09:49 1845为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在 ... -
oracle job 例子
2009-09-22 12:38 3036一、设置初始化参 ... -
oracle 时间加减综合
2009-09-17 11:43 1957加法 select sysdate,add_mon ... -
详细介绍ORACLE sqlplus命令
2009-09-09 16:42 2021一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭OR ... -
AWR介绍与SYSAUX空间关系 SYASAUX表空间满了 系统慢
2009-09-08 09:45 7841AWR介绍与SYSAUX空间关系 2007-11-05 14 ... -
to_char 'NLS_DATE_LANGUAG参数
2009-09-02 18:41 1438select to_char(sysdate, 'Day'), ... -
Oracle oracle 多语言排序
2009-08-17 14:43 1927Oracle9i之前,中文是按照二进制编码进行排序的。在ora ...
相关推荐
Oracle数据库优化及其应用程序研究 83 Instance实例和数据库 85 Oracle数据缓冲区内部机制 85 Oracle 9i数据库密码重用规则分析 87 Oracle数据库空间管理方法 91 用SQL*Loader将Excel数据导出到Oracle 94 Oracle ...
简述Oracle数据库逻辑结构中各元素之间的关系。 答:数据库由若干个表空间组成,表空间由表、索引、视图等逻辑对象组成,表由段 组成,段由区组成,区则由数据块组成。 2.简述Oracle数据库物理结构中包含的文件类型...
2、回答一下为什么有时一个表的某个字段明明有索引,当观察一些SQL的执行计划时,发现确不走索引的问题。 3、如果你对 FIRST_ROWS、 ALL_ROWS这两种模式有疑惑时也可以看一下这篇文章。 Oracle在执行一个SQL之前,首先...
Oracle数据库应用系统的性能优化是一项系统化的工程,涉及到数据库结构的各个方面。本文从B* 树索引入手, 分析了B* 树索引的结构及原理,阐明了如何正确合理地使用B* 树索引及其如何优化数据库系统的性能。
互联网上有很多关于数据库全文索引和文件方式全方索引的比较,其主旨都是要充分利用基于关键的索引及其优化算法,原理上也是相通的,相对而言基于文件的全文索引对中文的支持是比较弱的,同时也是一个比较难于...
索引,包括B树索引、基于函数的索引、位图索引、反向索引、降序索引、压缩索引等的使用方法及其适用情形等。在案例精讲中,对表压缩、约束的使能与失能、表的层次结构查询、防止删除表及对象、提取创建外键约束的...
系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等) 16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。 ...
其针对存储在Oracle Spatial数据库中空间元素提供了一种SQL 模式和便于存储、检索、更新、查询的函数集。它由以下组件构 成:一种描述几何数据存储、语法、语义的模式MDSYS;一种空间 索引机制SDO—INDEX;一组实现...
Oracle数据库关于SQL的执行计划 本文的目的: 1、说一说Oracle的Optimizer及其相关的一些知识。 2、回答一下为什么有时一个表的某个字段明明有索引,当观察一些SQL的执行计划时,发现确不走索引的问题。 3、...
索引,包括B树索引、基于函数的索引、位图索引、反向索引、降序索引、压缩索引等的使用方法及其适用情形等。在案例精讲中,对表压缩、约束的使能与失能、表的层次结构查询、防止删除表及对象、提取创建外键约束的...
第4章 Oracle 数据库及其管理 第5章 Oracle 数据表 第6章 Oracle 索引与聚簇 第7章 Oracle 视图 第8章 Oracle 的其它对象 第9章 Oracle 数据查询 第10章 Oracle 编程接口 第11章 Oracle 安全管理 第12章 Oracle ...
*熟知安装oracle数据库软件的所有的相关知识及其步骤背后的意义。 *以oracle公司提供的建议为主、关系型数据库的理论为辅,学习oracle数据库的工作原理。 *真正熟悉sga的内涵,进而提升oracle服务器的性能。 *像协奏...
Oracle B*树索引内部机制及其应用的研究.pdf
Oracle数据库设计规范建议 1 目的 本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生 的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很 好的保证。 ...
作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发现重复记录。 下面我们以表code_ref为例来讨论这个...
而本文是假设SQL本身合理,从Oracle提供给我们的一些技术手段来简单介绍下Oracle数据库,该如何使用一些现有的技术来优化一个SQL执行的性能。 1、确定需要优化的SQL文本及当前SQL执行计划 2、确定SQL涉及的...
dba_indexs:关于数据库中所有索引的描述 dba_ind_columns:在所有表及聚集上压缩索引的列 dba_objects:数据库中所有的对象 dba_rollback_segs:回滚段的描述 dba_segments:所有数据库段分段的存储空间 dba_synonyms:...