コンピューターシステム株式会社

技術BLOG

Oracleへのデータ取込みの時間比較をしてみた

データベース 2021/09/15 松山担当

こんにちは、松山本社のSBです。

Oracleデータベースで大量のデータを登録するには、いくつかの方法が考えられます。

今回は、その登録方法によってどれくらいの時間がかかるのかを調べてみようと思います。

データ登録方法としては、以下の方法を試してみようと思います。

・1行ごとのinsert

・select insert

・画面からデータインポート

・SQLローダ

【環境】

・Windows 7

・Oracle Database 11g Express Edition Release 11.2

・Oracle SQL Developer 4.0.3.16

【登録するデータについて】

今回は、以下のデータを登録します。

・10万件分のデータ

・登録先のテーブル

テーブル :"TESTUSER01"."TEST_TABLE_01"

フィールド:"FIELD_01" VARCHAR2(10 BYTE)

"FIELD_02" VARCHAR2(10 BYTE)

"FIELD_03" VARCHAR2(10 BYTE)

"FIELD_04" VARCHAR2(10 BYTE)

"FIELD_05" VARCHAR2(10 BYTE)

"FIELD_06" VARCHAR2(10 BYTE)

"FIELD_07" VARCHAR2(10 BYTE)

"FIELD_08" VARCHAR2(10 BYTE)

"FIELD_09" VARCHAR2(10 BYTE)

"FIELD_10" VARCHAR2(10 BYTE)

それぞれのデータ登録方法で、どれくらいの時間で登録できるのか試してみます。

【1行ごとのinsert】

以下の1行ごとのINSERT INTO文を実行して、10万件を登録しました。また、時間計測のために、開始と終了に時間を表示しています。

結果は以下となりました。

処理にかかった時間は、5分ほどでした。

【select insert】

次に、select insertでデータ登録してみました。一旦、登録対象のテーブルデータを削除したあとに、

以下のSQLで、10万件のデータを登録します。

結果は以下となりました。

処理にかかった時間は、5秒ほどでした。

【画面からデータインポート】

次に、画面からCSVインポートする場合にかかる時間を調べてみます。

一旦、登録対象のテーブルデータを削除して、準備しておいた10万件のデータを画面からインポートします。

登録処理にかかった時間は、15秒ほどでした。(PCにあるストップウォッチを使用して計っています)

【SQLローダ】

最後に、SQLローダでかかる時間を調べてみます。

一旦、登録対象のテーブルデータを削除して、準備しておいた10万件のデータをSQLローダで登録します。

ログに出力した実行時間を確認したところ、登録処理にかかった時間は、6秒ほどでした。

【最後に】

今回調べてみて、以下が分かりました。

・select insertが一番早かった(今回は10万件データで確認。よりデータ量が多いときは、未確認です)。

・1行ごとのinsertでは、登録するデータ量が多くなければ、処理時間と負荷がかかることが分りました。

 処理時間がかかることによって、場合によってはタイムアウトしてしまいエラーになるかもしれません。

・画面からのデータインポートするときとSQLローダでは、SQLローダの方が早かった。

 (内部では同じような仕組みで動いている気がして同じくらいの時間と思っていた。。)

登録するデータ量や、事前準備にかかる時間を考慮して登録方法を検討していこうと感じました。