ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: mypengchen2000

[精华] update或insert 140万数据的效率太低,怎么回事?? [复制链接]

注册会员

一般会员

精华贴数
0
技术积分
219
社区积分
329
注册时间
2001-9-26
论坛徽章:
2
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33
发表于 2003-7-9 11:35:54 |显示全部楼层
现在比较全面诊断的方法还是在运行这个操作时作一个statspack

它现在的确是用了索引,而且性能很好.
所以可能不是IO 的问题

对于hard pase我还是不是很认同,
1.因为有四个CPU,应该够多了.
2.你操作其它差不多的表,也应该有如此多的hard pase,为什么他们没有这种现象.?
3.我作一个纯hard pase操作,总计10000个,花118s
从statspack来看是
Event                                               Waits    Time (s) Ela Time
-------------------------------------------- ------------ ----------- --------
CPU time                                                          131    99.80
control file parallel write                           146           0      .12
db file sequential read                                44           0      .06
log file sync                                           4           0      .02
log file parallel write                               232           0      .00

latch free并不列入其中(Oracle9.2+RedHat)



可能还有其它的原因,比如和别人互锁,大家都很慢

使用statspack就可以比较全面了.
10分钟足够

使用道具 举报

注册会员

一般会员

精华贴数
0
技术积分
94
社区积分
0
注册时间
2003-7-1
论坛徽章:
0
发表于 2003-7-9 11:36:51 |显示全部楼层
SQL> show parameters compatible;

NAME                                 TYPE    VALUE
------------------------------------ ------- ------------------------------
compatible                           string  8.1.7


斑竹你说:
也许你可以试一下
cursor_sharing = force
这和int参数文件中的serial_reuse参数(disable)有没有关系吖?
还有就是cursor_sharing = force 应该怎么设呢?

使用道具 举报

精华贴数
0
技术积分
146
社区积分
129
注册时间
2002-4-2
论坛徽章:
15
咸鸭蛋
日期:2011-09-06 18:06:46
发表于 2003-7-9 11:36:57 |显示全部楼层

我的看法是索引建的不太好

把已有主建上的COL1,COL2上又单独建的两个索引去掉,然后UPDATE ,INSERT的时候还是用上绑定变量

看看是否有帮助。

使用道具 举报

注册会员

中级会员

精华贴数
2
技术积分
494
社区积分
4
注册时间
2002-6-25
论坛徽章:
0
发表于 2003-7-9 11:56:26 |显示全部楼层
谢谢,今天下午我会考虑做一个statspack,这样可能对分析问题有帮助,但除此之外,还有其他的办法吗??

关于表上的索引,我认为应该不是主要问题所在,之所以有些表有这样的问题,有些表没有这样的问题,一个是表的结构和索引情况都不尽然相同;另一方面,可能是记录数方面也是一个主要的差别所在,记录数大的话效率底的就更显著了;还有一方面,可能是操作上的不同,因为,有的表是在判断insert/update后确实是有记录要update的,而可能有另外的表,判断后不需要update,这样也是不同的;

使用道具 举报

精华贴数
0
技术积分
146
社区积分
129
注册时间
2002-4-2
论坛徽章:
15
咸鸭蛋
日期:2011-09-06 18:06:46
发表于 2003-7-9 12:02:39 |显示全部楼层

应该有关系的。

你既已在COL1,COL2上建立了主键,又在这个两个字段上单建索引,我认为是没有必要的,从你应用上看,也没有必要。数据量越大,带来的影响也会越大的。

使用道具 举报

注册会员

一般会员

精华贴数
0
技术积分
94
社区积分
0
注册时间
2003-7-1
论坛徽章:
0
发表于 2003-7-9 12:05:11 |显示全部楼层

Re: 应该有关系的。

最初由 idler 发布
[B]你既已在COL1,COL2上建立了主键,又在这个两个字段上单建索引,我认为是没有必要的。数据量越大,带来的影响也会越大的。 [/B]


如果查询里需要对COL1或COL2进行单独查询,建索引还是必要的吖

使用道具 举报

注册会员

一般会员

精华贴数
0
技术积分
94
社区积分
0
注册时间
2003-7-1
论坛徽章:
0
发表于 2003-7-9 12:06:17 |显示全部楼层
我认为楼主的问题所在应该是装载数据时的update or insert的问题?或者insert or update??

使用道具 举报

超级版主

人生就是如此

精华贴数
39
技术积分
113462
社区积分
12390
注册时间
2001-12-12
论坛徽章:
80
ITPUB元老
日期:2005-02-28 12:57:00蛋疼蛋
日期:2011-05-27 08:50:45蜘蛛蛋
日期:2011-07-01 08:38:17ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2003-7-9 12:25:48 |显示全部楼层

把这个查询结果给出来看看,可适当修改 order by 条件顺序

select * from
(select name,gets,misses,sleeps,IMMEDIATE_GETS ,IMMEDIATE_MISSES
from v$latch
order by  sleeps desc ,misses desc ,IMMEDIATE_MISSES desc  ,IMMEDIATE_GETS desc ,gets desc )
where rownum < 21;

select * from
(select
EVENT,         
TOTAL_WAITS    ,
TOTAL_TIMEOUTS ,
TIME_WAITED   ,
AVERAGE_WAIT   
from v$system_event
order by TIME_WAITED desc )
where rownum < 21;

select * from v$waitstat;




select * from
(select sid, event ,p1,p2,p3 ,WAIT_TIME, SECONDS_IN_WAIT
from v$session_wait
where SID = &THE_SID
order by wait_time desc )
where rownum < 21;

使用道具 举报

注册会员

中级会员

精华贴数
2
技术积分
494
社区积分
4
注册时间
2002-6-25
论坛徽章:
0
发表于 2003-7-9 12:35:23 |显示全部楼层
好的:
NAME                                                                   GETS     MISSES     SLEEPS IMMEDIATE_GETS IMMEDIATE_MIS
---------------------------------------------------------------- ---------- ---------- ---------- --
cached attr list                                                          0          0          0              0               
GDS latch                                                                 0          0          0              0               
KSFQ                                                                      0          0          0              0               
X$KSFQP                                                                   0          0          0              0               
trace latch                                                               0          0          0              0               
msg queue latch                                                           0          0          0              0               
session queue latch                                                       0          0          0              0               
ksfv subheap                                                              0          0          0              0               
resmgr group change latch                                                 0          0          0              0               
dlm cr info freelist latch                                                0          0          0              0               
dlm lock table freelist                                                   0          0          0              0               

NAME                                                                   GETS     MISSES     SLEEPS IMMEDIATE_GETS IMMEDIATE_MIS
---------------------------------------------------------------- ---------- ---------- ---------- --
dlm resource scan list                                                    0          0          0              0               
dlm resource hash list                                                    0          0          0              0               
dlm resource table freelist                                               0          0          0              0               
dlm process hash list                                                     0          0          0              0               
process parent latch                                                      0          0          0              0               
dlm process table freelist                                                0          0          0              0               
second spare latch                                                        0          0          0              0               
first spare latch                                                         0          0          0              0               
direct msg latch                                                          0          0          0              0               

20 rows selected.

为什么都是0呢??对了,现在数据库上没有进行insert/update的操作,是否要在做这个操作的时候,再来看你的语句结果呢??

使用道具 举报

注册会员

中级会员

精华贴数
2
技术积分
494
社区积分
4
注册时间
2002-6-25
论坛徽章:
0
发表于 2003-7-9 12:37:53 |显示全部楼层
对不起,我没有看全你的语句,我马上做insert/update的操作,在看你的语句结果,谢谢先!!

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部