r********9 发帖数: 1116 | 1 在使用oracle, 有60多millions的记录文件(约2.5g)要用sqlldr导入到一个空表中。
速度慢得令人发指,昨天晚上开始,到今天下午十几个小时一点动静都没有。然后傍晚
的时候终于开始有数据导入了,龟速,真的是龟速,平均一分钟不到10k的记录。照这
个速度,等load完要100多个小时了。
这个空表之前有创建过index,这可能会是速度慢的原因吗? |
r********9 发帖数: 1116 | 2 好吧,只好我自己来回答了。确实是index的问题。 |
g***l 发帖数: 18555 | 3 如果是个空表,INDEX和CONSTRAINT都要DROP掉 |
a*******s 发帖数: 324 | 4 但是如果数据是排了序的,好像问题不大
【在 g***l 的大作中提到】 : 如果是个空表,INDEX和CONSTRAINT都要DROP掉
|
c*****d 发帖数: 6045 | 5 导入的数据是不是排好序和导入的速度没太大关系
解决方法就是drop index before loading data
【在 a*******s 的大作中提到】 : 但是如果数据是排了序的,好像问题不大
|
y****w 发帖数: 3747 | 6 google:
Can one improve the performance of SQL*Loader?
A very simple but easily overlooked hint is not to have any indexes and/
or constraints (primary key) on your load tables during the load process.
This will significantly slow down load times even with ROWS= set to a high
value.
Add the following option in the command line: DIRECT=TRUE. This will
effectively bypass most of the RDBMS processing. However, there are cases
when you can't use direct load. For details, refer to the FAQ about the
differences between the conventional and direct path loader below.
Turn off database logging by specifying the UNRECOVERABLE option. This
option can only be used with direct data loads.
Run multiple load jobs concurrently. |
a*******s 发帖数: 324 | 7 具体问题应该具体分析把。
如果是空table,add index after loading data.
如果table已经有〉100M 纪录,难道还要drop index-->load data-->add index????
【在 c*****d 的大作中提到】 : 导入的数据是不是排好序和导入的速度没太大关系 : 解决方法就是drop index before loading data
|
c*****d 发帖数: 6045 | 8 lz said "在使用oracle, 有60多millions的记录文件(约2.5g)要用sqlldr导入到一个
空表中。"
【在 a*******s 的大作中提到】 : 具体问题应该具体分析把。 : 如果是空table,add index after loading data. : 如果table已经有〉100M 纪录,难道还要drop index-->load data-->add index????
|