<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.mysqlnd.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.overview.php',
    1 => '概要',
    2 => '概要',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.install.php',
    1 => 'インストール',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/mysqlnd/overview.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlnd.overview" class="chapter">
 <h1 class="title">概要</h1>

 <p class="simpara">
  <strong>何ではないか</strong>
 </p>
 <p class="simpara">
  MySQL Native Driver は PHP の拡張モジュールとして作られていますが、
  PHP を使って開発をする人たちに新しい API を提供するものではないことに注意しましょう。
  MySQL データベースに接続するための API を提供するのは、
  MySQL 拡張モジュールや <code class="literal">mysqli</code> そして
  PDO MYSQL です。これらの拡張モジュールが、MySQL Native
  Driver を使って MySQL サーバーと通信できるようになったということです。
  したがって、MySQL Native Driver を新たな API と考えてはいけません。
 </p>
 <p class="simpara">
  <strong>使うべき理由</strong>
 </p>
 <p class="simpara">
  MySQL Native Driver には、
  MySQL Client Library に比べて数多くの利点があります。
 </p>
 <p class="simpara">
  旧来の MySQL Client Library は MySQL AB (現在の Oracle
  Corporation) が書いたものであり、MySQL ライセンスのもとでリリースされていました。
  それが原因で、最終的には PHP がデフォルトで MySQL をサポートしなくなってしまいました。
  しかし MySQL Native Driver は PHP プロジェクトの一部として開発されており、
  PHP ライセンスのもとでリリースされています。
  これで、かつて存在したライセンス問題も解決しました。
 </p>
 <p class="simpara">
  また、かつては MySQL データベース用の拡張モジュールをビルドするには
  MySQL Client Library が必要でした。
  これはつまり、PHP をソースからビルドしようとすると、
  そのマシン上に MySQL をインストールしておく必要があったということです。
  また、PHP のアプリケーションを動かす際に、
  MySQL データベース用の拡張モジュールは最終的に
  MySQL Client Library のファイルを呼び出すことになるので、
  システム上にそのファイルをインストールしておくことも必要でした。
  MySQL Native Driver ならその必要はありません。
  すべてが標準の配布ファイルに組み込まれているからです。
  PHP をビルドしたり PHP のアプリケーションを動かしたりするときに、
  MySQL をインストールする必要がなくなったのです。
 </p>
 <p class="simpara">
  MySQL Native Driver は PHP の拡張モジュールとして作られているので、
  PHP 本体の動作と密につながっています。つまり、
  特にメモリ管理などの点で効率があがります。
  というのも、ドライバが PHP のメモリ管理システムを使えるからです。
  また、PHP のメモリ制限もサポートします。
  MySQL Native Driver を使うと MySQL Client Library
  と同等あるいはそれを上回るパフォーマンスを得られますが、
  メモリの使い方はずっと効率的です。その一例をあげましょう。
  MySQL Client Library を使うと各行がメモリに二度格納されることになりますが、
  MySQL Native Driver の場合は各行がメモリに格納されるのは一度だけです。
 </p>
 <blockquote class="note"><p><strong class="note">注意</strong>: 
  <strong>メモリ使用量の報告</strong><br />
  <span class="simpara">
   MySQL Native Driver は PHP のメモリ管理システムを使っているので、
   そのメモリ使用量を <span class="function"><a href="function.memory-get-usage.php" class="function">memory_get_usage()</a></span> で追えます。
   これは libmysqlclient では不可能なことです。なぜなら libmysqlclient は
   C の malloc() 関数を使っているからです。
  </span>
 </p></blockquote>
 <p class="simpara">
  <strong>おすすめ機能</strong>
 </p>
 <p class="simpara">
  MySQL Native Driver には、それ特有の機能もあります。
  以下にまとめるこれらの機能は、MySQL Client Library を使った MySQL
  データベース用の拡張モジュールでは利用できないものです。
 </p>
 <ul class="itemizedlist">
  <li class="listitem">
   <span class="simpara">
    持続的接続の改善
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    <span class="function"><a href="mysqli-result.fetch-all.php" class="function">mysqli_fetch_all()</a></span> 関数
   </span>
  </li>
  <li class="listitem">
   <span class="simpara">
    パフォーマンス統計用の関数
    <span class="function"><a href="function.mysqli-get-client-stats.php" class="function">mysqli_get_client_stats()</a></span>、
    <span class="function"><a href="mysqli.get-connection-stats.php" class="function">mysqli_get_connection_stats()</a></span>
   </span>
  </li>
 </ul>
 <p class="simpara">
  パフォーマンス統計機能を活用すれば、
  パフォーマンス上のボトルネックを見つけるのに大いに役立つでしょう。
 </p>
 <p class="simpara">
  MySQL Native Driver を
  <code class="literal">mysqli</code> 拡張モジュールで使うと、持続的接続も可能です。
 </p>
 <p class="simpara">
  <strong>SSL サポート</strong>
 </p>
 <p class="simpara">
  MySQL Native Driver は、SSL をサポートしています。
 </p>
 <p class="simpara">
  <strong>圧縮プロトコルのサポート</strong>
 </p>
 <p class="simpara">
  MySQL Native Driver は、圧縮済みのクライアントサーバープロトコルをサポートします。
  <code class="literal">ext/mysql</code> や <code class="literal">ext/mysqli</code>
  では、MySQL Native Driver を使うように設定すればこの機能を使えるようになります。
  ただし、<code class="literal">PDO_MYSQL</code> については mysqlnd
  と組み合わせても圧縮機能が<em>使えない</em>ことに注意しましょう。
 </p>
 <p class="simpara">
  <strong>名前付きパイプのサポート</strong>
 </p>
 <p class="simpara">
  Windows では、接続に名前付きパイプが使えます。
 </p>
</div>
<?php manual_footer($setup); ?>