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