質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

解決済

Oracleへのインサートが遅い(パラメータによって大幅に異なる)

jk233
jk233

総合スコア55

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

2回答

0評価

0クリップ

4314閲覧

投稿2019/07/11 08:39

サーバ:Oracle11g
クライアント:Windows10+Vagrant+CentOS7.4.1708、oracle-instantclient11.1-sqlplus-11.1.0.7.0-1

SQL

CREATE TABLE TABLE1 (COL1 VARCHAR2(1500));

SQL

(test.sqlselect to_char(systimestamp, 'yyyy/mm/dd hh24:mi:ss.ff3') from dual; insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); insert into TABLE1 (COL1) values ('111・・・(中略)・・・111'); commit; select to_char(systimestamp, 'yyyy/mm/dd hh24:mi:ss.ff3') from dual;

インサートしようとする値が1146Byteの場合(1が1146回連続した文字列をインサートする場合)

bash

[root@localhost home]# sqlplus xxx/xxx@192.168.0.xxx:1521/xxx @test.sql SQL*Plus: Release 11.1.0.7.0 - Production on Thu Jul 11 17:08:43 2019 Copyright (c) 1982, 2008, Oracle. All rights reserved. Connected to: Oracle Database 11g Release 11.2.0.3.0 - 64bit Production TO_CHAR(SYSTIMESTAMP,'YYYY/MM ----------------------------- 2019/07/11 17:08:33.018 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. Commit complete. TO_CHAR(SYSTIMESTAMP,'YYYY/MM ----------------------------- 2019/07/11 17:08:33.049

インサートしようとする値が1147Byteの場合(1が1147回連続した文字列をインサートする場合)

bash

[root@localhost home]# sqlplus xxx/xxx@192.168.0.xxx:1521/xxx @test.sql SQL*Plus: Release 11.1.0.7.0 - Production on Thu Jul 11 17:06:42 2019 Copyright (c) 1982, 2008, Oracle. All rights reserved. Connected to: Oracle Database 11g Release 11.2.0.3.0 - 64bit Production TO_CHAR(SYSTIMESTAMP,'YYYY/MM ----------------------------- 2019/07/11 17:06:31.478 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. 1 row created. Commit complete. TO_CHAR(SYSTIMESTAMP,'YYYY/MM ----------------------------- 2019/07/11 17:06:35.659

つまり、
インサートしようとする値が1146Byteの場合は約0.03秒で完了します。
インサートしようとする値が1147Byteの場合は約4.18秒で完了します。
パラメータを1Byte増やすだけで処理時間が大幅に増えるのですが、どのようなことが理由として考えられるでしょうか。
宜しくおねがいします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。