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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle Database 11g

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1205閲覧

PDOによるOracleへのインサートが遅い

jk233

総合スコア55

Oracle Database 11g

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/07/11 05:40

Oracle11g、PHP7.1.14、Windows10+Vagrant+CentOS7.4.1708

SQL

1CREATE TABLE TABLE1 (COL1 VARCHAR2(1500));

PHP

1$start = microtime(true); 2$length = 1387; 3try { 4 $pdo = new PDO("oci:dbname=192.168.0.xxx:1521/xxx;charset=AL32UTF8", "xxx", "xxx"); 5 $pdo->beginTransaction(); 6 $stmt = $pdo->prepare("insert into TABLE1 (COL1) values (?)"); 7 for ($i=0; $i<20; $i++) { 8 $stmt->execute([str_repeat("1", $length)]); 9 } 10 $pdo->commit(); 11} catch (PDOException $e) { 12 exit($e->getMessage()); 13} 14echo sprintf('%0.5f', microtime(true) - $start);

$lengthが1387の場合は0.5秒くらいで完了します。
$lengthが1388の場合は4.5秒くらいで完了します。

パラメータを1Byte増やすだけで処理時間が大幅に増えるのですが、どのようなことが理由として考えられるでしょうか。
宜しくおねがいします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/11 05:49

1500ではどうなりますか?
jk233

2019/07/11 05:56

$lengthが1500の場合は4.5秒くらいで完了します。
m.ts10806

2019/07/11 06:03

PHPから実行した場合と直にSQL実行した場合と違いはありますか?
jk233

2019/07/11 08:19 編集

直にSQL実行しても再現しました。 当初の質問内容から離れてきたので別の質問として投稿したいと思います。 ありがとうございました。
guest

回答2

0

1バイトの違いで、っては解せませんが、UPDATEを繰り返していると領域監視 断片化 が考えられます。熟読する価値があります。

投稿2019/07/11 05:47

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

直にSQL実行しても再現しました。
当初の質問内容から離れてきたので別の質問として投稿したいと思います。

投稿2019/07/11 08:14

jk233

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問