ORACLE插入数据慢
oracle10.2G建有A,B两张表,往A表插入数据会通过触发器向B也添加一个同样的数据,A表每天会清除一次数据,一开始使用没有什么问题,当B表数据到了100W(大概一...
oracle 10.2G
建有A,B两张表,往A表插入数据会通过触发器向B也添加一个同样的数据,A表每天会清除一次数据,
一开始使用没有什么问题,当B表数据到了100W(大概一个月时间)左右.向A表插入数据时很慢,插入1000条数据差不多要20分钟,把触发器禁用了也一样慢,又在同一个用户下建了一个新表C,表结构,表空间和A表一样.加不加触发器都是和A表一样慢.
后来又一新建了一人新的用户,在用户下新建了一个表D,表结构,表空间和A表一样,也通过触发器向旧用户的表B添加一个同样的数据,这时插入表D的速度就很正常,而且表也能加到表B中.
所以问题应该是在用户上,但就是找不出原因,求高人指教.不胜感激.
A,C,D都没有索引 展开
建有A,B两张表,往A表插入数据会通过触发器向B也添加一个同样的数据,A表每天会清除一次数据,
一开始使用没有什么问题,当B表数据到了100W(大概一个月时间)左右.向A表插入数据时很慢,插入1000条数据差不多要20分钟,把触发器禁用了也一样慢,又在同一个用户下建了一个新表C,表结构,表空间和A表一样.加不加触发器都是和A表一样慢.
后来又一新建了一人新的用户,在用户下新建了一个表D,表结构,表空间和A表一样,也通过触发器向旧用户的表B添加一个同样的数据,这时插入表D的速度就很正常,而且表也能加到表B中.
所以问题应该是在用户上,但就是找不出原因,求高人指教.不胜感激.
A,C,D都没有索引 展开
3个回答
展开全部
要准确定位问题需要事实说话,光描述现象无法做到的。
我建议lz这么做:
1、在窗口一中执行select sid from v$mystat where rownum=1;
结果中的数字是当面session的标识(设为<sid>)。
2、在窗口一中执行插入操作,也就是你说1000条需要20分钟的那个操作。
3、马上新打开一个窗口,重复执行select event,wait_class from v$session where sid=<sid>;
这个查询会告诉你那个插入操作的session处于什么事件,事件类型是什么。如果你发现长时间处于某个事件,那么就说明时间花在这个事件上(设为事件A)。
4、搜索降低事件A耗时的方法
我建议lz这么做:
1、在窗口一中执行select sid from v$mystat where rownum=1;
结果中的数字是当面session的标识(设为<sid>)。
2、在窗口一中执行插入操作,也就是你说1000条需要20分钟的那个操作。
3、马上新打开一个窗口,重复执行select event,wait_class from v$session where sid=<sid>;
这个查询会告诉你那个插入操作的session处于什么事件,事件类型是什么。如果你发现长时间处于某个事件,那么就说明时间花在这个事件上(设为事件A)。
4、搜索降低事件A耗时的方法
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询