我希望这里有人可能会帮助我。

在我工作的公司宁愿我使用MySQL而不是MSSQL。 所以,我下载了最新的驱动程序(6.1)和我端起了DB层。

但是我无法找到BeginExecuteReader函数,它接受一个回调作为参数。

这是有原因的?抑或是不同的使用MySQL的?

据我可以看到它,如果代码没有引发回调,我需要查询这使得它缓慢。利用每个连接一个阻塞线程也未尝我希望避免的。

任何想法如何解决呢? (除了改变这可能超出我的权力驾驶员)

[R

有帮助吗?

解决方案

MySQL的连接器的版本6.3.4实现异步方法,但它似乎只是调用一个委托异步所以这将是非阻塞调用线程,但它不会从线程池保存任何线程。 下面是关于这的错误报告。

和,就像你说的,它不会有一个回调参数。 下面是关于这的错误报告。

我相信 devart的数据提供商正确地实现异步方法,但它们不是免费的。

总之,异步调用数据库本身并不意味着更好的整体可扩展性。我建议你阅读文章 “的如果我的数据库调用是异步?”一个深入的分析。

其他提示

我不知道这个连接器而言,但我已经看到了MySQL的所有其他连接器只是等待服务器的execute()或查询()调用时返回的数据。当您尝试请求下一行,但它并没有从MySQL服务器还没到,你会得到使用“无缓冲”的版本,从执行(立即返回)或查询(),但块最接近的一次。

MySQL的线程支持对我来说似乎基本上在事后进行。

可以不,例如,通过C API,取消发行的查询;相反,查询功能简单的块。为了使多个并发查询,则每个查询需要一个线程!

尝试使用Postgres的。我没有用它(C API把我关 - 所有这些类型定义),但它肯定具有多线程查询适当的支持(例如异步调用等)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top