当前位置: 代码迷 >> Oracle管理 >> oracle10g 在处理大数据量时怎么保证查询速度
  详细解决方案

oracle10g 在处理大数据量时怎么保证查询速度

热度:698   发布时间:2016-04-24 04:38:58.0
oracle10g 在处理大数据量时如何保证查询速度
我碰到的问题是这样,比如我有一个表里有100W数据,我现在要删除90W,我的业务程序要求的实时性比较高,就是每条查询语句不能超过一秒钟,但是假如我正在删除这90W数据,导致数据库处理速度降低(不知为什么,系统内容和cpu使用率都不高,但是就是慢),这时候我的业务程序在进行查询、更新或者插入的时候就会非常慢,有时甚至需要几分钟。这种问题我该如何优化才能保证我的业务程序不受干扰。
我举删除90W数据只是一个例子,因为我有的业务程序也会大批量的插入或者删除数据,举这个例子比较直接。

分不多,但是只要能帮我解决问题,小弟倾家荡产也会持续加分。

------解决方案--------------------
大量删除和更新必然影响其他更新和插入操作,可以看看性能AWR,看主要是磁盘IO问题呢,还是锁问题

对于查询的话,估计不会太慢,没有锁的阻塞问题,估计机器性能不太好造成的
------解决方案--------------------
删除操作可以放到晚上执行,例如做一个凌晨执行的定时任务,用于删除数据。
------解决方案--------------------
估计是删除时程序正在访问你要删除的数据,导致出现高一致读

你的表能做分区么?  想办法让要删除的数据在一个分区里面  这样一次truncate

很快
------解决方案--------------------
删除操作分批执行,例如你要删除90w数据,可以一次删除5K,循环180次删除完成,这样会快很多,
一次性删除90W数据,需要维护巨大的redolog和undolog,容易出现瓶颈。可以试一下。
------解决方案--------------------
支持这种说法。。。。。分批量来删除。
引用:
删除操作分批执行,例如你要删除90w数据,可以一次删除5K,循环180次删除完成,这样会快很多,
一次性删除90W数据,需要维护巨大的redolog和undolog,容易出现瓶颈。可以试一下。

------解决方案--------------------
估计是锁问题造成了,

你在删除数据时,把资源锁定了,其他会话要访问该资源时,只能等到删除会话把资源释放,
这样会话不能及时完成,会话越积越多,系统效率就慢了。把删除程序改成分批删除应该有一定的效果。
------解决方案--------------------
增大UNDO段试试
使用DBMS_STATS进行块清除,以防止查询的时候进行块清除...
------解决方案--------------------
请提供操作当时的快照和alter log信息
  相关解决方案