« 2007年8月 | トップページ | 2007年10月 »

SQL*Loaderのrowsとreadsize,bindsize

書籍を読んで実施したSQL*Loaderでの取込作業でしたが、rows=1000指定しているのになぜか46件ずつしかコミットしてくれない。。
という問題が勃発し、100万件以上のデータを取り込むのに、、何時間かかるのかという衝撃の展開を迎えました。
他のデータも100万件以上あるのでこのままでは、一体何日掛ってしまうのかわからないということに・・・

調べてみたところ。。
下記それぞれのサイズが、デフォルトで下記指定になっているため、いくらrowsを指定してもサイズ側で制限値を迎えるとそのタイミングでコミットされてしまうらしい。

readsize 1,048,576 byte
bindsize 256,000 byte

そこで、下記に変えてみたところ。。

readsize 10000000 byte(10M)
bindsize 10000000 byte(10M)

かなり早くなった。100万件で30分程度
上記指定をより大きくしかつrowsを10000位にするとより早くなりそう。。

いや。。無知ってこわいです。。

・・・

その後、索引がついているテーブルに実施してしまったため徐々に遅くなり、、結局途中で断念してやりなおすことに。。

索引を削除して実施したら、10時間⇒45分 基本を忘れたらいかんですね。件数が多くなれば多くなるほど、このオーバーヘッドは大きくなりますね。

|

« 2007年8月 | トップページ | 2007年10月 »