|
MySQL C API
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 Java) 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.
The client has a maximum communication buffer size. The size of the buffer
that is allocated initially (16K bytes) is automatically increased up to the
maximum size (the maximum is 16M). 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
queries 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 16M of data, you must have a communication buffer limit of at
least 16M (in both server and client). The client's default maximum is 16M, but
the default maximum in the server is 1M. You can increase this by changing the
value of the
max_allowed_packet
parameter when the server is started.
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, consult the 'how to make a thread-safe
client' chapter.
|