[+/-]
C
APIコードはMySQLを使って配付されます。それはmysqlclient
ライブラリの中に含まれ、これによって、データベースにアクセスすることが許されます。
ソース・デストリビューション中のクライアントの多くはC言語で書かれています。C
APIを使用する方法を示す例を探す場合、これらのクライアントを調べてください。MySQLソースデストリビューション中のclients
ダイレクトリーの中でこれらを見つけることができます。
他のクライアントAPIの殆ど(Connector/JおよびConnector/NETを除く全て)はmysqlclient
ライブラリを使ってMySQLサーバと交信します。これは、例えば、他のクライアントプログラムによって使われると同じ環境変数の多くから利益を得ることができることを意味します。これらの変数のリストについては、章 7. クライアントプログラムとユーティリティ
プログラムをご参照ください。
クライアントは最大のコミュニケーションバッファーサイズを持っています。最初に割り当てられたバッファーのサイズ(16KB)は自動的に最大サイズまで増やされます。(この場合の最大は16MB)バッファーサイズは需要保証としてだけ増やされるので、初期設定最大限度を単純に増加させても、使用すべき資源の本質的増加を引き起こしません。このサイズチェックは殆どの場合、エラーステートメントとコミュニケーションパケットに対するチェックです。
コミュニケーションバッファーは、(クライアントからサーバへのトラフィックに対する)シングルSQLステートメント並びに(サーバからクライアントへのトラフィックに対する)返還データの1本の列を含めるに十分な大きさを持っていなければなりません。各スレッッドのコミュニケーションバッファーはクエリーもしくは列を最大限度まで扱うため、ダイナミックに拡大されます。例えば、サイズが16MB未満のデータを含む BLOB
値を持っている場合、(サーバとクライアントの両方の中に)少なくとも16MBのコミュニケーション・バッファー
リミットを持っていなければなりません。クライアントのデフォルト最大値は16MBですが、サーバのそれは1MBです。サーバを立ち上げる時、max_allowed_packet
パラメータの値を変更することによってこれを増やすことができます。項6.5.2. 「サーバパラメータのチューニング」を参照してください。
MySQLサーバは各クエリーの後、各コミュニケーションバッファーを net_buffer_length
バイトに縮小させます。クライアントの場合、接続に関係するバッファーのサイズは接続が閉鎖されるまで減少されません。その時、クライアントのメモリーは改善されます。
詳しくは項23.2.16. 「スレッド付きクライアントを作る方法」をご参照ください。同じプログラムの中にサーバとクライアントを含み(外部MySQLサーバと交信しない)独立したアプリケーションを生成するには、項23.1. 「埋め込まれたMySQLサーバライブラリ、libmysqld」をご参照ください。