对于可以在C或C++应用程序中使用的Mysql,是否存在任何异步连接器?我正在寻找一些可以插入到编码为Boost.Asio的reactor pattern中的东西。异步Mysql连接器
[编辑:]在线程中运行同步连接器不是一个选项。
对于可以在C或C++应用程序中使用的Mysql,是否存在任何异步连接器?我正在寻找一些可以插入到编码为Boost.Asio的reactor pattern中的东西。异步Mysql连接器
[编辑:]在线程中运行同步连接器不是一个选项。
http://forums.mysql.com/read.php?45,183339,183339 享受
更新链接到原始文章展示了如何做异步的MySQL查询:
http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/
我认为唯一的解决方案是创建一个包装standard connector的异步服务。你需要了解ODBC API。
我有一个非常不同的技术类似的问题:Twisted python(基于reactor的IO)和sqlAlchemy(??)。在寻找解决方案时,我发现了一个sAsync项目,它为sqlAlchemy创建了一个单独的线程,然后响应请求。由于ASIO基于低级操作系统功能(如aio_read()或ReadFileEx()等)和OS级反应器(或Windows的情况下的proactor),所以我认为你不会有另一个机会而不是通过类似的手段来模拟“异步性”。
运行中的线程同步连接器是不是一种选择
想想吧:libmysqlclient/mysqlclient.dll
你使用使得同步套接字调用。操作系统调度程序将正确切换到另一个线程,直到I/O完成,所以有什么区别? (除了你不应该为此做2k线程..)
编辑:mysql_real_connect()支持一个UNIX套接字参数。你可以从MySQL服务器端口读取自己的数据,并使用ASIO写入该UNIX套接字。就像一个代理服务器。
有一个名为DBSlayer的项目,它将另一层置于MySQL前面,通过JSON与之交谈。 http://code.nytimes.com/projects/dbslayer
[运行中的线程同步连接器是不是一种选择 想想看:在的libmysqlclient /你使用mysqlclient.dll使得同步套接字调用。操作系统调度程序将正确切换到另一个线程,直到I/O完成]
这是在烦我! - “另一个线程”可以轻松地进行第二次同步。连接到mysql,应该由mysql处理,就像它将另一个客户端一样?我的感觉是它应该使用多线程工作。
它将在线程中工作。但是可以说,你希望与一台或多台服务器建立100个连接。不是我想象任何人会这样做,但为了争论而接受它。我应该旋转100个线程(或者甚至只有10个线程池)?这是相当大的开销。 – 2008-10-02 13:38:44
MySQL连接/ C++是一个C++实现JDBC 4.0
的的使用MySQL Connector/C++的参考客户是: - OpenOffice - MySQL Workbench
你有没有考虑使用libdrizzle?我只使用过一个旧版本,当时它是一个来自毛毛雨的单独项目,我测试了异步查询功能,但是我从未做过任何值得一提的实际基准测试。
我已经采用当我创建这个问题时,快速浏览Drizzle项目(请参阅我的评论以接受答案)。那时他们正在进行一个异步客户端。我真的不知道结果如何。 – 2011-06-03 08:12:37
阻塞连接在这个实现中是一个严重的问题,但似乎是做我最初的要求。毛毛雨项目(https://launchpad.net/drizzle)正在开发一个异步客户端,它将与Mysql向后兼容(这里提到:http://www.oddments.org/?p=20) – 2008-10-09 08:05:21