a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 79|回复: 0

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

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
以下的文章抓哟是对Oracle SQL执行缓慢的原因的分析,如果Oracle数据库中的某张表的相关数据已是2亿多时,同时此表也创建了相关的4个独立的相关索引。由于业务方面的需要,每天需分两次向此表中插入300万条记录。
: b0 N4 n! J- \4 `% e# N    9 T) w) g) Q) ]5 |/ Z; |) d. L
    由于数据量大,每次插入耗时3个小时以上,严重影响效率。& j6 e' \% S! ?( c
    % X/ B4 b  Z' D+ ?! d/ N
    因此,修改了系统的算法,将此表中只存储当天新增记录。将此表truncate后,第二天执行对此表的update操作时,非常耗时。表中有2亿多条数据的时候,此Oracle sql语句耗时59秒;表中有300万条数据的时候,此Oracle sql语句耗时几个小时。1 Q& E! M- q) f
    : B# c# [# N% X- w- I
    咨询DBA后,得出结论,需重建索引。重建后,6秒完成此操作。但第三天问题依然出现。DBA正在查找原因。难道每次truncate表,都需要重建tb索引?
; }6 _5 [7 [' E2 t/ E% c    , L" `5 U5 R# }9 ^1 o; R
    对于这个问题,DBA也没有给出合理的解释,推测主要原因是Oracle复杂的查询优化算法。
# d* w7 s: Q3 T9 O   
! f$ ?! c0 v: {' V! P    最终,DBA给出的解决方案:
, g8 H4 A! |% n    " Y" {+ v6 Z" S. M/ X
    truncate table …! c& X( J- K6 H( [. f
    5 v9 F0 s% J3 C5 R  _" Z% A
    drop index……中 华 考 试 网6 E6 J( Q1 p- s% E# Q' d9 [5 s1 n9 x2 ?
   
# ?/ a3 v3 S  o8 B* _2 b" }; c/ y    insert data ……9 i0 O7 G# ^$ ~$ ?6 M
    " y) L5 R2 ~7 K  y! c
    create index …
0 T* U$ N: w% j   
# X+ a: k1 W9 H  n2 L    analyze table table_name compute statistics;
- k. I& x" ]8 E4 z5 A1 h3 ?    7 S4 H! C$ ^2 @+ t" o9 W
    重新生成统计数据/ [3 {# r0 I5 W/ Y
   
  f% D6 D) k3 y7 y9 O# g    调整后,整个操作耗时非常少。
5 J5 q/ G( D6 S; T   
: q9 G! t$ ]7 }    以上的相关内容就是对Oracle SQL执行缓慢的分析的介绍,望你能有所收获。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 08:03 , Processed in 0.292727 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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