你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
MySQL中文参考手册---20 MySQL客户工具和API(1)
 

20.1MySqlCAPI

CAPI代码是随MySql分发的,它被包含在MySqlclient库且允许C程序存取一个数据库

在MySql源代码分发中的很多客户是用C编写的。如果你正在寻找演示怎样使用CAPI的例子,看一下这些客户程序。

大多数其他客户API(除了Java的所有)都使用MySqlclient库与MySQL服务器通信。这意味着,例如,你能利用很多被其他客户程序使用的同一环境变量,因为他们从库中引用。对这些变量的一张表,见12.1不同的MySQL程序的概述。

客户有一个最大通讯缓冲区大小。初始分配的缓冲区大小(16K字节)自动地增加到最大尺寸(缺省的最大值是24M)。因为缓冲区大小只是按保证需求而被增加,简单地增加缺省的最大限制并不造成更多被消耗。该尺寸检查主要是一个对错误的查询和通讯包的检查。

通讯缓冲区必须足够大以便一个单独的SQL语句(对客户-服务器传输)和一行返回的数据(对服务器-客户传输)。每个线程的通讯缓冲区被动态扩大到最大限制来处理任何查询或行。例如,如果你包含大到16M数据的BLOB值,你必须有一个至少16M通讯缓冲区限制(在服务器和客户两端)。客户的缺省最大值是24M,但是在服务器端的缺省最大值是1M。你可以在服务器启动时通过改变max_allowed_packet参数的值来改变它。见10.2.3调节服务器参数。

MySQL服务器在每个查询后缩小每个通讯缓冲区到net_buffer_length个字节。对客户,与一个连接相关的缓冲区的大小没被减少,直到连接被关闭,在此时客户内存被回收。

如果你用线程的编程,你应该用--with-thread-safe-client编译MySQLCAPI,这将使CAPI线程对每个连接更安全。你可以让2个线程共享相同的连接,只要如果你做下列事情:

两个线程不能同时在同一个连接上发送查询到MySQL。特别是你必须保证在一个sql/Index.html'>mysql_query()sql/Index.html'>mysql_store_result()之间没有其他线程正在使用同一个连接。
许多线程能存取用sql/Index.html'>mysql_store_result()检索出来的不同结果集合。
如果你使用sql/Index.html'>mysql_use_result,你必须保证没有其他线程在同一个连接上正在询问任何东西,直到结果集合被关闭。

 

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089