DELETE と TRUNCATE TABLE の違い

Oracleに100万件のデータをinsertするツールを動かしても、全くレスポンスが返ってこないトラブルがありました。このツールは100万件を1トランザクションで行うもので、当初は1トランザクションの処理量が多いからなのかと思いましたが違いました。

今まで膨大なテストデータをinsertしてきてはdeleteしてクリーニングを行ってきたのですが、deleteで全てのデータを消したとしても、一度確保した領域は保持し続けるそうです。

拡張したエクステントを解放するためにはtruncateしないといけないみたいで、実際に必要なデータだけ一度、エクスポートしておいてtruncateでテーブルをきれいにした後に、このツールを実行したら無事にinsertができました。

deleteとtruncateの違いをしっかり理解できていなかったということです。。。

参考
TRUNCATE と DELETE の違い - オラクル・Oracleをマスターするための基本と仕組み
ハイウォータマークの操作方法 - オラクル・Oracleをマスターするための基本と仕組み