第一章MySQL C API

C API提供对MySQL客户端/服务器协议的低级访问,使C程序能够访问数据库内容。C API代码与MySQL一起发布,并在libmysqlclient图书馆。看到第二章,MySQL C API实现

其他大多数客户端api使用libmysqlclient库与MySQL服务器通信。(例外是Connector/J和Connector/NET。)这意味着,例如,您可以利用其他客户机程序使用的许多相同的环境变量,因为它们是从库中引用的。有关这些变量的列表,请参见MySQL程序概述

有关使用C API构建客户端程序的说明,请参见第3.2节,“构建C API客户端程序”。要使用线程编程,请参见第3.4节,“编写C API线程客户端程序”。要在同一个程序中创建一个独立的应用程序,其中包括“服务器”和“客户端”(并且不与外部MySQL服务器通信),请参见libmysqld,嵌入式MySQL服务器库

请注意

如果在升级之后,您在已编译的客户机程序上遇到问题,例如命令不同步或者意外的核心转储,程序可能是使用旧的头文件或库文件编译的。在这种情况下,检查日期mysql.h文件和libmysqlclient.a库用于编译,以验证它们来自新的MySQL发行版。如果没有,则用新的头文件和库重新编译程序。如果库的主版本号发生了变化(例如,来自libmysqlclient.so.17libmysqlclient.so.18)。有关其他兼容性信息,请参见3.5节,“运行C API客户端程序”

客户端有一个最大通信缓冲区大小。最初分配的缓冲区大小(16KB)将自动增加到最大大小(默认为16MB)。因为缓冲区大小只在需要时才增加,因此仅仅增加最大限制本身并不会导致使用更多的资源。这种大小检查主要是防止错误语句和通信数据包的预防措施。

通信缓冲区必须足够大,以包含一条SQL语句(用于客户机到服务器的通信)和一行返回数据(用于服务器到客户机的通信)。每个会话的通信缓冲区被动态地扩大,以处理最大限度的查询或行。例如,如果你有如果一个值最多包含16MB的数据,那么通信缓冲区的限制必须至少为16MB(服务器和客户端都是如此)。内置到客户端库中的默认最大容量是1GB,但是服务器中的默认最大容量是1MB。属性的值可以增加这个值max_allowed_packet参数。看到配置服务器

MySQL服务器将每个通信缓冲区缩小为net_buffer_length每个查询后的字节数。对于客户端,与连接关联的缓冲区的大小直到连接关闭时才会减少,此时客户端内存将被回收。