21

是否存在可在 C 或 C++ 应用程序中使用的 Mysql 异步连接器?我正在寻找可以插入用Boost.Asio编写的反应器模式的东西。

[编辑:] 在线程中运行同步连接器不是一种选择。

4

8 回答 8

6

http://forums.mysql.com/read.php?45,183339,183339 享受

更新了原始文章的链接,展示了如何进行异步 mysql 查询:

http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/

于 2008-10-08T20:34:40.220 回答
2

我在使用非常不同的技术时遇到了类似的问题:Twisted python(基于反应器的 IO)和 sqlAlchemy(??)。在寻找解决方案时,我发现了一个 sAsync 项目,它只是为 sqlAlchemy 创建了一个单独的线程,然后响应请求。

鉴于 ASIO 基于低级 OS 功能(例如 aio_read() 或 ReadFileEx() 等)和 OS 级反应器(或在 Windows 的情况下的前摄器),我认为除了模拟 '异步'通过类似的方式。

在线程中运行同步连接器不是一种选择

想一想:libmysqlclient / mysqlclient.dll您正在使用的进行同步套接字调用。操作系统调度程序会正确切换到另一个线程,直到 I/O 完成,那么有什么区别呢?(除了你不应该为此创建 2k 线程的事实之外......)

编辑:mysql_real_connect() 支持 UNIX 套接字参数。据说您可以从 mysql 服务器端口读取自己并仅使用 ASIO 写入该 UNIX 套接字。就像代理一样。

于 2008-09-29T15:52:32.567 回答
1

[ 在线程中运行同步连接器不是一种选择考虑一下:您正在使用的 libmysqlclient / mysqlclient.dll 进行同步套接字调用。操作系统调度程序将正确切换到另一个线程,直到 I/O 完成]

这让我很烦!- “另一个线程”很容易成为第二次同步。连接到 mysql,并且应该由 mysql 处理,就像它完全可以处理另一个客户端一样?我的直觉是它应该使用多个线程工作。

于 2008-09-30T17:36:33.447 回答
1

MySQL Connector/C++ 是 JDBC 4.0 的 C++ 实现

使用 MySQL Connector/C++ 的参考客户有: - OpenOffice - MySQL Workbench

了解更多: http: //forums.mysql.com/read.php?167,221298

于 2009-03-07T08:27:24.877 回答
1

我知道这是一个老问题,但考虑看看新的 Boost.Mysql 库:https ://anarthal.github.io/mysql/index.html

于 2021-03-10T07:31:04.210 回答
0

我认为唯一的解决方案是创建一个包装标准连接器的异步服务。不过,您需要了解 ODBC API。

于 2008-09-01T22:09:51.607 回答
0

有一个名为 DBSlayer 的项目,它在 MySQL 前面放置了另一层,您可以通过 JSON 与之对话。http://code.nytimes.com/projects/dbslayer

于 2008-09-30T17:10:36.910 回答
0

你考虑过使用libdrizzle吗?我只使用了一个旧版本,从它与 drizzle 的单独项目开始,我测试了异步查询功能,但我从未做过任何值得一提的实际基准测试。

于 2011-06-02T22:07:06.253 回答