IO 比较慢

cscj21 2008-11-16 10:38:01
大家好,有个关于IO的问题请教各位,如下:

表A有2000万数据,表A和表B都有downdate 日期型的索引

把表A的数据插入到表B,现在有两种方式

1、循环,每次6个小时把A表的数据写入到B表(使用downdate索引)
2、一次性把A表的数据插入到B表

明显,方式2会快很多。但是当想把B表的数据读取出来,按每24小时循环处理时,发现主要是
Db file sequential read 的IO等待。(比如CPU 时间:50,Db file sequential read:700,共执行760)

问题:Db file sequential read 是不是因为一次性把数据写入导致的,如果按方式1好象没有这种问题。
我查了B表的数据大概是平均存储5个数据文件中,但这些文件是放在D:上的,如果数据文件分开放在不同的分区(E:、F:)上会快些吗?
...全文
119 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiirii 2008-11-17
  • 打赏
  • 举报
回复
如果是全表导入,不用索引应该更快。

因为你给的条件比较少,如果是晚上空闲时间导入,那有Db file sequential read 的问题不大
cscj21 2008-11-17
  • 打赏
  • 举报
回复
sql 其实很简单,就是B表和一个小表c(几百条记录)外关联
insert t(...)
select ...
where b.col3=c.col3(+)
and b.col4=c.col4(+)
and b.downdate>=:vdate
and b.downdate< :vdate+1
group by b.col1,b.col2

查看实际的查询计划是用到downdate索引。会不会是因为在2000W表中,查一天的数据(10W)用索引会更慢。但是我试过用全表扫描也很慢。

今天trace插入一天的数据,发现Db file sequential read的时间是 CPU时间的100倍
共执行450s, CPU:40s,Db file sequential read:400s


Db file sequential read 等待这么久会是什么原因造成的,有什么好的办法吗?
数据库没有其它的用户,只有一个用户在运行。白天晚上都一样的
wffffc 2008-11-16
  • 打赏
  • 举报
回复
1.一次sequential读取通常是单个块的读取,要看看你的sql语句
2.如果不是物理磁盘的话没有效果的

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧