insert数据库速度奇慢

[复制链接]
查看11 | 回复9 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
我循环insert大概1000条记录到一个表里面,正常应该很快,可是我这里执行了10多分钟还没看到完成。我是用oracle8.1.7,双CPU,1G的内存。那个表里面大概有30万条记录。
请教大家是不是该调一下数据库的什么参数。
补充:查询的时候感觉速度还可以。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
next/pctincrease/freelist
回滚段的状况怎样

你insert的时候有没有别人在用?
V$_session_event,V$session_wait
你的session到底在等什么?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
你好,实在是不好意思,你说的那几个参数我不知道在那里可以看到。能告诉我吗?
是不是在pfile下的配置文件里,我打开了那个文件也没看到。
谢谢你。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
select * from V$_session_event;
select * from V$session_wait;
找到你的SESSION的SID对应的事件。
next/pctincrease/freelist
在表的创建脚本里有,也可以从PL/SQL Developer或其他工具里看。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
SQL> select * from v$session_event where sid = 16;
SID EVENT
---------- ----------------------------------------------------------------
TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT MAX_WAIT
----------- -------------- ----------- ------------ ----------
16 latch free

1
1 0
0
0
16 log file switch completion

1
0 0
0
0
16 log file sync
521
0 0
0
0

SID EVENT
---------- ----------------------------------------------------------------
TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT MAX_WAIT
----------- -------------- ----------- ------------ ----------
16 direct path read

2
0 0
0
0
16 direct path write

3
0 0
0
0
16 file open

1
0 0
0
0

SID EVENT
---------- ----------------------------------------------------------------
TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT MAX_WAIT
----------- -------------- ----------- ------------ ----------
16 SQL*Net message to client
2008
0 0
0
0
16 SQL*Net message from client
2007
0 0
0
0
16 SQL*Net break/reset to client

4
0 0
0
0

9 rows selected.
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
Insert 数据慢可能与以下几个有关
1。是否有足够的回滚段可用
2。表的存储参数的设置(因为insert数据时要分配新的存储空间,如果设置不当回造成系统Wait
3。数据库的并发如何
4。通过查询V$session_event去查看该会话的主要等事件
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
我查出来了,是
INITIAL_EXTENT2883584
NEXT_EXTENT 131072
MIN_EXTENTS1
MAX_EXTENTS 4096
PCT_INCREASE0
还有另外一个表,同样执行,比这个快一些。
INITIAL_EXTENT 5242880
NEXT_EXTENT 131072
MIN_EXTENTS 1
MAX_EXTENTS 4096
PCT_INCREASE 0
就是INITIAL_EXTENT不同。
请问这个是调什么的。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
将NEXT_EXTENT 加大点
该为2M试试
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
是不是用:
update user_tables set NEXT_EXTENT=2097152 where TABLE_NAME="表名"
就可以了。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
是不是用:
update user_tables set NEXT_EXTENT=2097152 where TABLE_NAME="表名"
就可以了。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行