Oracle SQL执行缓慢的原因以及解决方案
2018-01-09 10:26
197 查看
以下的文章抓哟是对Oracle SQL执行缓慢的原因的分析,如果Oracle数据库中的某张表的相关数据已是2亿多时,同时此表也创建了相关的4个独立的相关索引。由于业务方面的需要,每天需分两次向此表中插入300万条记录。 www.2cto.com
由于数据量大,每次插入耗时3个小时以上,严重影响效率。
因此,修改了系统的算法,将此表中只存储当天新增记录。将此表truncate后,第二天执行对此表的update操作时,非常耗时。表中有2亿多条数据的时候,此Oracle sql语句耗时59秒;表中有300万条数据的时候,此Oracle sql语句耗时几个小时。
咨询DBA后,得出结论,需重建索引。重建后,6秒完成此操作。但第三天问题依然出现。DBA正在查找原因。难道每次truncate表,都需要重建tb索引?
对于这个问题,DBA也没有给出合理的解释,推测主要原因是Oracle复杂的查询优化算法。
最终,DBA给出的解决方案:
www.2cto.com
truncate table ....
drop index.....
insert data .....
create index ...
analyze table table_name compute statistics;
重新生成统计数据
调整后,整个操作耗时非常少。
以上的相关内容就是对Oracle SQL执行缓慢的分析的介绍,望你能有所收获。
由于数据量大,每次插入耗时3个小时以上,严重影响效率。
因此,修改了系统的算法,将此表中只存储当天新增记录。将此表truncate后,第二天执行对此表的update操作时,非常耗时。表中有2亿多条数据的时候,此Oracle sql语句耗时59秒;表中有300万条数据的时候,此Oracle sql语句耗时几个小时。
咨询DBA后,得出结论,需重建索引。重建后,6秒完成此操作。但第三天问题依然出现。DBA正在查找原因。难道每次truncate表,都需要重建tb索引?
对于这个问题,DBA也没有给出合理的解释,推测主要原因是Oracle复杂的查询优化算法。
最终,DBA给出的解决方案:
www.2cto.com
truncate table ....
drop index.....
insert data .....
create index ...
analyze table table_name compute statistics;
重新生成统计数据
调整后,整个操作耗时非常少。
以上的相关内容就是对Oracle SQL执行缓慢的分析的介绍,望你能有所收获。
相关文章推荐
- Oracle SQL执行缓慢的原因以及解决方案
- 动软软代码生成器使用(127.0.0.1)无法看到 SQLServer2008 新附加数据库的 原因 以及 解决方案
- Web应用乱码(2)__原因以及解决方案详解
- mysql主从延迟原因以及解决方案
- CCAssert(sm_pSharedApplication, "")导致程序闪退的原因以及解决方案
- Cocos2d-x 实现地图滚动,解释缝隙产生的原因以及解决方案
- [每日一答] [20151024] incomplete final line found by readTableHeader on ${fileName}原因以及解决方案
- java java.util.ConcurrentModificationException 原因以及解决方案
- jquery append脚本增加的html onclick时间无法生效的原因以及解决方案
- android 内存泄露原因以及排查和解决方案
- mysql 在修改添加字段(alter table 表名 add column 或者 modify column)且带unique时提示duplicate entry for key的原因以及解决方案
- 2013年1月18日调试触发器“表发生了变化,触发器或函数不能读它”的出现原因,以及解决方案
- jenkins - svn: E170001报错的原因以及解决方案
- Xcode Archive打包时不报错,但是buildFailed原因以及解决方案
- MySQL主从延迟原因以及解决方案
- Activity中获取view的高度和宽度为0的原因以及解决方案
- mysqlerror2003错误原因以及解决方案
- Address already in use: bind端口被占用的多种原因以及解决方案
- mysql主从延迟原因以及解决方案
- 使用第三方库出现找不到so库UnsatisfiedLinkError错误的原因以及解决方案