The C API code is distributed with MySQL. It is included in the
mysqlclient
library and allows C programs to
access a database.
Many of the clients in the MySQL source distribution are written
in C. If you are looking for examples that demonstrate how to use
the C API, take a look at these clients. You can find these in the
clients
directory in the MySQL source
distribution.
Most of the other client APIs (all except Connector/J and
Connector/NET) use the mysqlclient
library to
communicate with the MySQL server. This means that, for example,
you can take advantage of many of the same environment variables
that are used by other client programs, because they are
referenced from the library. See
Chapter 8, Client and Utility Programs, for a list of these
variables.
The client has a maximum communication buffer size. The size of
the buffer that is allocated initially (16KB) is automatically
increased up to the maximum size (the maximum is 16MB). Because
buffer sizes are increased only as demand warrants, simply
increasing the default maximum limit does not in itself cause more
resources to be used. This size check is mostly a check for
erroneous statements and communication packets.
The communication buffer must be large enough to contain a single
SQL statement (for client-to-server traffic) and one row of
returned data (for server-to-client traffic). Each thread's
communication buffer is dynamically enlarged to handle any query
or row up to the maximum limit. For example, if you have
BLOB
values that contain up to 16MB of data,
you must have a communication buffer limit of at least 16MB (in
both server and client). The client's default maximum is 16MB, but
the default maximum in the server is 1MB. You can increase this by
changing the value of the max_allowed_packet
parameter when the server is started. See
Section 7.5.2, “Tuning Server Parameters”.
The MySQL server shrinks each communication buffer to
net_buffer_length
bytes after each query. For
clients, the size of the buffer associated with a connection is
not decreased until the connection is closed, at which time client
memory is reclaimed.
For programming with threads, see
Section 25.2.15, “How to Make a Threaded Client”. For creating a standalone
application which includes the "server" and "client" in the same
program (and does not communicate with an external MySQL server),
see Section 25.1, “libmysqld, the Embedded MySQL Server Library”.