Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


23.8 MySQL C API

C API は、MySQL クライアント/サーバープロトコルへの低レベルアクセスを提供し、C プログラムがデータベースの内容にアクセスできるようにします。C API コードは MySQL とともに配布され、libmysqlclient ライブラリに実装されています。セクション23.8.1「MySQL C API の実装」を参照してください。

ほかのほとんどのクライアント API は libmysqlclient ライブラリを使用して、MySQL サーバーと通信します。(例外は Connector/J および Connector/Net です。)これは、たとえば、ほかのクライアントプログラムによって使用されている多くの同じ環境変数を利用できることを意味します。それらは、ライブラリから参照されているためです。これらの環境変数のリストについては、セクション4.1「MySQL プログラムの概要」を参照してください。

C API を使用してクライアントプログラムを構築する手順については、セクション23.8.4.1「C API クライアントプログラムの構築」を参照してください。スレッドによるプログラミングについては、セクション23.8.4.2「C API スレッドクライアントプログラムの作成」を参照してください。「サーバー」と「クライアント」を同じプログラムに含む (および外部 MySQL サーバーと通信しない) スタンドアロンアプリケーションを作成するには、セクション23.7「組み込み MySQL サーバーライブラリ libmysqld」を参照してください。

注記

アップグレード後に、コンパイル済みのクライアントプログラムに、「コマンドは同期されていません」または予期しないコアダンプなどの問題が発生した場合は、プログラムが古いヘッダーファイルまたはライブラリファイルを使用してコンパイルされた可能性があります。この場合、コンパイルに使用された mysql.h ファイルおよび libmysqlclient.a ライブラリの日付をチェックして、それらが新しい MySQL 配布からのものであることを確認します。そうでない場合には、プログラムを新しいヘッダーおよびライブラリで再コンパイルします。ライブラリのメジャーバージョン番号が変更された (libmysqlclient.so.17 から libmysqlclient.so.18 など) 場合に、共有クライアントライブラリに対してコンパイルされているプログラムでも、再コンパイルが必要になる可能性があります。追加の互換性情報については、セクション23.8.4.3「C API クライアントプログラムの実行」を参照してください。

クライアントは最大の通信バッファーサイズを持ちます。最初に割り当てられるバッファーのサイズ (16K バイト) は最大サイズ (デフォルトで 16M バイト) まで自動的に増やされます。バッファーサイズは、必要に応じてのみ増やされるため、最大制限を単純に増やしても、それ自体で使用されるリソースが増えるわけではありません。このサイズチェックは、主に誤ったステートメントと通信パケットに対する予防措置です。

通信バッファーは、単一の SQL ステートメント (クライアントからサーバーへのトラフィックの) と 1 行の返されるデータ (サーバーからクライアントへのトラフィックの) を格納するために十分な大きさがある必要があります。各セッションの通信バッファーは、クエリーまたは行を処理するために、最大制限まで動的に拡大されます。たとえば、16M バイトまでのデータを格納する BLOB 値がある場合、少なくとも 16M バイトの通信バッファー制限が必要です (サーバーとクライアントの両方で)。クライアントライブラリに組み込まれたデフォルトの最大は 1G バイトですが、サーバーでのデフォルトの最大は 1M バイトです。これを増やすには、サーバー起動時に max_allowed_packet パラメータの値を変更します。セクション8.11.2「サーバーパラメータのチューニング」を参照してください。

MySQL サーバーは各クエリー後、各通信バッファーを net_buffer_length バイトに縮小します。クライアントでは、接続に関連付けられたバッファーのサイズは接続がクローズされるまで減らされません。その時点で、クライアントのメモリーが再利用されます。


User Comments
Sign Up Login You must be logged in to post a comment.