Bug #67002 [Opn->Nab]: function oci_fetch_all & similar really low
| From: | sixd@php.net | Date: | Wed, 02 Apr 2014 17:45:35 +0000 |
| Subject: | Bug #67002 [Opn->Nab]: function oci_fetch_all & similar really low | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-185050@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=67002&edit=1
ID: 67002
Updated by: sixd@php.net
Reported by: aurelien dot lequoy at esysteme dot com
Summary: function oci_fetch_all & similar really low
-Status: Open
+Status: Not a bug
Type: Bug
Package: OCI8 related
Operating System: Red Hat 6.3
PHP Version: 5.5.10
-Assigned To:
+Assigned To: sixd
Block user comment: N
Private report: N
New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions. Due to the volume
of reports we can not explain in detail here why your report is not
a bug. The support channels will be able to provide an explanation
for you.
Thank you for your interest in PHP.
---------
The PHP bug db is not a support forum. Please ask your question on a PHP mail list, or at http://www.oracle.com/technetwork/forums/php/index.html
You will need to create a reproducable test case that includes sample data.
Provide timing data to show which OCI8 calls are taking time (i.e. to rule
out oci_connect as an issue),
Also, review tuning options such as oci8.default_prefetch http://www.php.net/manual/en/oci8.configuration.php
Previous Comments:
------------------------------------------------------------------------
[2014-04-02 00:36:18] aurelien dot lequoy at esysteme dot com
Description:
------------
I migrate a really big application from PHP 4.4 to PHP 5.5
some screen in PHP 4.4 took 1 sec or less, when I migrate to PHP 5.5 I got some trouble with
execution time.
The query took about ~1 sec in both case.
after :
oci_fetch_all php 4.4 => 1 sec
oci_fetch_all php 5.5 => 16~18 sec (for the following query)
I observed same problem with all other function like :
- oci_fetch_array
- oci_fetch_object
with a loop in PHP
About Oracle, I tried all version available of client on website :
10.1
11.2
12.1
..
About my installation :
PHP 5.5 (from remi repo) Red hat 6.3 on 64 bit
rpm -i client
rpm -i devel
pecl install oci8
Test script:
---------------
select used : (return about 8 000 lines for 29 fields)
WITH LISTE_IMPUTATION AS
( SELECT 'COURANTE' TYLIGNE,
WPK.CDPRJ,
WPK.CDWPK,
PRJ.LIPRJ,
WPK.LIWPK,
NVL(
( SELECT INVALSIM
FROM DBASIF.FF_HWP HWP
WHERE HWP.CDPRJ =WPK.CDPRJ
AND HWP.CDWPK =WPK.CDWPK
AND HWP.DTMOISDHD='201402'),WPK.INVALSIM) INVALSIM,
( SELECT INVALWPM
FROM DBASIF.FF_HWP HWP
WHERE HWP.CDPRJ =WPK.CDPRJ
AND HWP.CDWPK =WPK.CDWPK
AND HWP.DTMOISDHD='201402') INVALWPM, WPK.CDWPL,
( SELECT LIUSER
FROM DBASIF.IC_USER
WHERE CDUSER=WPK.CDWPL) LIWPL, WPK.CDWPLD,
( SELECT LIUSER
FROM DBASIF.IC_USER
WHERE CDUSER=WPK.CDWPLD) LIWPLD,
WPO.CDWPLR,
IMP.CDORG,
IMP.CDIMPU,
IMP.LIIMPU,
IMP.TYIMPU
FROM DBASIF.FD_PRJ PRJ,
DBASIF.FD_WPK WPK ,
DBASIF.FD_IMP IMP,
DBASIF.FF_WPO WPO
WHERE PRJ.CDORG= 'A0015'
AND PRJ.CDPLFM = 'TGS_ELECTRIFICATION'
AND WPK.CDPRJ =PRJ.CDPRJ
AND IMP.CDPRJ =WPK.CDPRJ
AND IMP.CDWPK =WPK.CDWPK
AND WPO.CDORG(+) =WPK.CDORG
AND WPO.CDWPL(+) =WPK.CDWPL) ,
LISTE_FORECAST AS
( SELECT IMP.CDORG,
IMP.CDPRJ,
IMP.CDWPK,
IMP.LIPRJ,
IMP.LIWPK,
IMP.TYIMPU,
IMP.CDIMPU,
IMP.LIIMPU,
IMP.INVALSIM,
IMP.INVALWPM,
IMP.CDWPL,
IMP.LIWPL,
IMP.CDWPLD,
IMP.LIWPLD,
IMP.CDWPLR,
TRG.CDRESPM,
PLG.TYRESS,
PLG.CDDEP,
PLG.LIDEP,
TRIM(PLG.CDMAT) CDMAT,
( SELECT MAT.LIMAT
FROM DBASIF.HD_MAT MAT
WHERE MAT.CDORG=PLG.CDORG
AND MAT.CDMAT =PLG.CDMAT) LIMAT, PLG.CDPOSTE, PLG.CDCOMP, PLG.CDSECT, PLG.NULIGNE,
PLQ.DTMOISCO, PLQ.QTPREV, PLQ.QTHPREV,
( SELECT QTPREV
FROM DBASIF.FF_PLQ_MAT_V
WHERE CDORG =PLQ.CDORG
AND CDMAT =PLG.CDMAT
AND DTMOISCO =PLQ.DTMOISCO) QTPREV_TOT
FROM LISTE_IMPUTATION IMP,
DBASIF.FF_PLG PLG,
DBASIF.FF_PLQ PLQ,
DBASIF.FD_TRG TRG
WHERE PLG.CDORG =IMP.CDORG
AND PLG.TYIMPU =IMP.TYIMPU
AND PLG.CDIMPU =IMP.CDIMPU
AND PLG.TYLIGNE ='3'
AND TRIM(PLG.NULIWPDRI) IS NULL
AND TRIM(PLG.NULIWPDSA) IS NULL
AND PLQ.CDORG =PLG.CDORG
AND PLQ.TYIMPU =PLG.TYIMPU
AND PLQ.CDIMPU =PLG.CDIMPU
AND PLQ.NULIGNE =PLG.NULIGNE
AND PLQ.DTMOISCO >'201402'
AND TRG.CDORG =PLG.CDORG
AND TRG.CDPOSTE =PLG.CDPOSTE
AND PLQ.DTMOISCO<('201402'+200))
SELECT CASE
WHEN TYLIGNE='DEP' THEN '6'
WHEN TYRESS ='3'
AND TRIM(CDMAT) IS NOT NULL THEN '5'
WHEN TYRESS ='3'
AND TRIM(CDMAT) IS NULL THEN '4'
WHEN TYRESS IN ('1',
'2')
AND QTPREV_TOT>1.16 THEN '3'
WHEN TYRESS ='2'
AND QTPREV_TOT<=1.16 THEN '2'
ELSE '1'
END TYPE_AFF,
CDPRJ,
CDWPK,
LIPRJ,
LIWPK,
INVALSIM,
INVALWPM,
CDWPL,
LIWPL,
CDWPLD,
LIWPLD,
CDWPLR,
CDRESPM,
TYIMPU,
CDIMPU,
LIIMPU,
TYRESS,
CDDEP,
LIDEP,
CDMAT,
CASE
WHEN TYRESS ='3'
AND TRIM(CDMAT) IS NULL THEN CDPOSTE
ELSE LIMAT
END LIMAT,
CDPOSTE,
CDCOMP,
CDSECT,
NULIGNE,
DTMOISCO,
QTPREV,
QTHPREV,
QTPREV_TOT
FROM
( SELECT 'FOR' TYLIGNE,
CDPRJ,
CDWPK,
LIPRJ,
LIWPK,
INVALSIM,
INVALWPM,
CDWPL,
LIWPL,
CDWPLD,
LIWPLD,
CDWPLR,
CDRESPM,
TYIMPU,
CDIMPU,
LIIMPU,
TYRESS,
CDDEP,
LIDEP,
CDMAT,
LIMAT,
CDPOSTE,
CDCOMP,
CDSECT,
NULIGNE,
DTMOISCO,
QTPREV,
QTHPREV,
QTPREV_TOT
FROM LISTE_FORECAST)
the script :
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, 'see query on top');
oci_execute($stid);
$nrows = oci_fetch_all($stid); => take all time
Expected result:
----------------
execution time : 1 sec max (like in PHP 4.4)
Actual result:
--------------
execution time : 16 ~ 18 seconde for this case (can be more)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=67002&edit=1