a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 80|回复: 0

[综合] Oracle入门指南:SQL执行缓慢的原因

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
以下的文章抓哟是对Oracle SQL执行缓慢的原因的分析,如果Oracle数据库中的某张表的相关数据已是2亿多时,同时此表也创建了相关的4个独立的相关索引。由于业务方面的需要,每天需分两次向此表中插入300万条记录。6 l4 S. i4 T* m* ^
    ! x+ w' u5 x& T0 t, |8 D
    由于数据量大,每次插入耗时3个小时以上,严重影响效率。: A- q) b0 H7 k  a
   
: z- i, R8 u) _# l    因此,修改了系统的算法,将此表中只存储当天新增记录。将此表truncate后,第二天执行对此表的update操作时,非常耗时。表中有2亿多条数据的时候,此Oracle sql语句耗时59秒;表中有300万条数据的时候,此Oracle sql语句耗时几个小时。& Q2 L7 x6 Q( Q4 ?9 h( P% c
   
. |3 C: D( T4 ~  t+ z3 V    咨询DBA后,得出结论,需重建索引。重建后,6秒完成此操作。但第三天问题依然出现。DBA正在查找原因。难道每次truncate表,都需要重建tb索引?( _$ c: e# H( j5 i0 P+ Q, @, m- D
    2 i# I% u2 O1 A
    对于这个问题,DBA也没有给出合理的解释,推测主要原因是Oracle复杂的查询优化算法。
+ ]- o) `/ m0 b2 Z4 l. h    3 `# z  s0 ]% k# l5 q5 [
    最终,DBA给出的解决方案:
- b+ e- c8 @+ D% L) ^4 u   
. v- E/ m% o3 x0 @- N    truncate table …- \. C; i0 {. w/ B4 P+ l3 C4 \
   
1 x# Q/ b; e3 y9 e" `    drop index……中 华 考 试 网
/ }. H; a& t  D$ K! f- g" U4 ^    8 F3 W- |2 D6 G/ t! \: \7 ?. H
    insert data ……# b8 `0 j. N1 ~
    2 x0 T3 a, F* K  [$ @8 y
    create index …( P  U  l" u" Y- J: u
    # _+ |/ I) G2 W3 G5 J
    analyze table table_name compute statistics;- U1 l2 ]2 m: K+ H5 G3 z
   
1 s  V0 d4 K. c3 H    重新生成统计数据
, e1 @# F3 m  s" X6 M   
6 \3 \+ w8 R- k0 u2 N    调整后,整个操作耗时非常少。
+ H9 f) |6 Z# k; `   
# h5 y( l; l* \* D7 I! S" L" I    以上的相关内容就是对Oracle SQL执行缓慢的分析的介绍,望你能有所收获。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-1 22:41 , Processed in 0.330648 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表