-
Notifications
You must be signed in to change notification settings - Fork 56
/
oci-set-prefetch-lob.xml
137 lines (125 loc) · 4.11 KB
/
oci-set-prefetch-lob.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 35dc939fd104d82146846224bf171b048a47b64b Maintainer: mumumu Status: ready -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.oci-set-prefetch-lob">
<refnamediv>
<refname>oci_set_prefetch_lob</refname>
<refpurpose>CLOB や BLOB ごとにプリフェッチするデータサイズを設定する</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>oci_set_prefetch_lob</methodname>
<methodparam><type>resource</type><parameter>statement</parameter></methodparam>
<methodparam><type>int</type><parameter>prefetch_lob_size</parameter></methodparam>
</methodsynopsis>
<para>
<function>oci_execute</function> を使って成功したクエリや、
その後に実行されるデータベースへの内部的なフェッチリクエストによって、
内部的な Oracle LOB ロケータを取得する際に、
CLOB や BLOB ごとにフェッチする内部バッファサイズを設定します。
この値を増やすと、LOB のサイズが小さい場合に、
PHP と データベース間の問い合わせの数を減らすことができ、パフォーマンスを向上させることができます。
メモリ消費量は増加します。
</para>
<para>
ここで設定する値は、OCILob インスタンスとして返されるLOB や
<constant>OCI_RETURN_LOBS</constant> を使って返される LOB に影響します。
</para>
<para>
<function>oci_execute</function> をコールする前に、
<function>oci_set_prefetch_lob</function> をコールするようにして下さい。
コールされない場合、<link linkend="ini.oci8.prefetch-lob-size">oci8.prefetch_lob_size</link>
の値を使います。
</para>
<para>
LOB のプリフェッチサイズの値は、Oracle Database 12.2 以降でのみ設定できます。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>statement</parameter></term>
<listitem>
&oci.arg.statement.id;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>prefetch_lob_size</parameter></term>
<listitem>
<para>
LOB ごとにプリフェッチするバイト数を、0以上の値として設定します。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>LOB のプリフェッチサイズをクエリ毎に変更する</title>
<programlisting role="php">
<![CDATA[
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, 'SELECT myclob FROM mytable');
oci_set_prefetch_lob($stid, 100000); // Set before calling oci_execute()
oci_execute($stid);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : " ")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
oci_free_statement($stid);
oci_close($conn);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member>
<link linkend="ini.oci8.prefetch-lob-size">oci8.prefetch_lob_size</link> ini オプション
</member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->