-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathoverview.xml
146 lines (146 loc) · 6.29 KB
/
overview.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
138
139
140
141
142
143
144
145
146
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a714378ed87cdbdbde3b10ded183e8df7b243cb4 Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<chapter xml:id="mysqlnd.overview" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>概要</title>
<para>
<emphasis role="bold">何ではないか</emphasis>
</para>
<para>
MySQL Native Driver は PHP の拡張モジュールとして作られていますが、
PHP を使って開発をする人たちに新しい API を提供するものではないことに注意しましょう。
MySQL データベースに接続するための API を提供するのは、
MySQL 拡張モジュールや <literal>mysqli</literal> そして
PDO MYSQL です。これらの拡張モジュールが、MySQL Native
Driver を使って MySQL サーバーと通信できるようになったということです。
したがって、MySQL Native Driver を新たな API と考えてはいけません。
</para>
<para>
<emphasis role="bold">使うべき理由</emphasis>
</para>
<para>
MySQL Native Driver には、
MySQL Client Library に比べて数多くの利点があります。
</para>
<para>
旧来の MySQL Client Library は MySQL AB (現在の Oracle
Corporation) が書いたものであり、MySQL ライセンスのもとでリリースされていました。
それが原因で、最終的には PHP がデフォルトで MySQL をサポートしなくなってしまいました。
しかし MySQL Native Driver は PHP プロジェクトの一部として開発されており、
PHP ライセンスのもとでリリースされています。
これで、かつて存在したライセンス問題も解決しました。
</para>
<para>
また、かつては MySQL データベース用の拡張モジュールをビルドするには
MySQL Client Library が必要でした。
これはつまり、PHP をソースからビルドしようとすると、
そのマシン上に MySQL をインストールしておく必要があったということです。
また、PHP のアプリケーションを動かす際に、
MySQL データベース用の拡張モジュールは最終的に
MySQL Client Library のファイルを呼び出すことになるので、
システム上にそのファイルをインストールしておくことも必要でした。
MySQL Native Driver ならその必要はありません。
すべてが標準の配布ファイルに組み込まれているからです。
PHP をビルドしたり PHP のアプリケーションを動かしたりするときに、
MySQL をインストールする必要がなくなったのです。
</para>
<para>
MySQL Native Driver は PHP の拡張モジュールとして作られているので、
PHP 本体の動作と密につながっています。つまり、
特にメモリ管理などの点で効率があがります。
というのも、ドライバが PHP のメモリ管理システムを使えるからです。
また、PHP のメモリ制限もサポートします。
MySQL Native Driver を使うと MySQL Client Library
と同等あるいはそれを上回るパフォーマンスを得られますが、
メモリの使い方はずっと効率的です。その一例をあげましょう。
MySQL Client Library を使うと各行がメモリに二度格納されることになりますが、
MySQL Native Driver の場合は各行がメモリに格納されるのは一度だけです。
</para>
<note>
<title>メモリ使用量の報告</title>
<para>
MySQL Native Driver は PHP のメモリ管理システムを使っているので、
そのメモリ使用量を <function>memory_get_usage</function> で追えます。
これは libmysqlclient では不可能なことです。なぜなら libmysqlclient は
C の malloc() 関数を使っているからです。
</para>
</note>
<para>
<emphasis role="bold">おすすめ機能</emphasis>
</para>
<para>
MySQL Native Driver には、それ特有の機能もあります。
以下にまとめるこれらの機能は、MySQL Client Library を使った MySQL
データベース用の拡張モジュールでは利用できないものです。
</para>
<itemizedlist>
<listitem>
<para>
持続的接続の改善
</para>
</listitem>
<listitem>
<para>
<function>mysqli_fetch_all</function> 関数
</para>
</listitem>
<listitem>
<para>
パフォーマンス統計用の関数
<function>mysqli_get_client_stats</function>、
<function>mysqli_get_connection_stats</function>
</para>
</listitem>
</itemizedlist>
<para>
パフォーマンス統計機能を活用すれば、
パフォーマンス上のボトルネックを見つけるのに大いに役立つでしょう。
</para>
<para>
MySQL Native Driver を
<literal>mysqli</literal> 拡張モジュールで使うと、持続的接続も可能です。
</para>
<para>
<emphasis role="bold">SSL サポート</emphasis>
</para>
<para>
MySQL Native Driver は、SSL をサポートしています。
</para>
<para>
<emphasis role="bold">圧縮プロトコルのサポート</emphasis>
</para>
<para>
MySQL Native Driver は、圧縮済みのクライアントサーバープロトコルをサポートします。
<literal>ext/mysql</literal> や <literal>ext/mysqli</literal>
では、MySQL Native Driver を使うように設定すればこの機能を使えるようになります。
ただし、<literal>PDO_MYSQL</literal> については mysqlnd
と組み合わせても圧縮機能が<emphasis>使えない</emphasis>ことに注意しましょう。
</para>
<para>
<emphasis role="bold">名前付きパイプのサポート</emphasis>
</para>
<para>
Windows では、接続に名前付きパイプが使えます。
</para>
</chapter>
<!-- 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
-->