.net MySQLCommand BeginExecuteReader缺少AsyncCallback参数,使其实际上毫无用处

.net MySQLCommand BeginExecuteReader缺少AsyncCallback参数,使其实际上毫无用处,.net,mysql,database,ado.net,database-connection,.net,Mysql,Database,Ado.net,Database Connection,我希望这里有人能帮我 我工作的公司希望我使用MySQL而不是MSSQL。 所以我下载了最新的驱动程序(6.1)并移植了DB层 但是,我找不到将回调作为参数的BeginExecuteReader函数 这是有原因的吗?或者它与MySQL的工作方式不同 据我所知,如果代码没有引发回调,我需要轮询,这会使它变慢。在每个连接中使用阻塞线程也是我想要避免的事情 有人知道如何解决这个问题吗?(除了更换司机,这可能超出我的权限) R我不知道这个连接器的具体情况,但是我在mysql中看到的其他连接器都只是等待服务

我希望这里有人能帮我

我工作的公司希望我使用MySQL而不是MSSQL。 所以我下载了最新的驱动程序(6.1)并移植了DB层

但是,我找不到将回调作为参数的BeginExecuteReader函数

这是有原因的吗?或者它与MySQL的工作方式不同

据我所知,如果代码没有引发回调,我需要轮询,这会使它变慢。在每个连接中使用阻塞线程也是我想要避免的事情

有人知道如何解决这个问题吗?(除了更换司机,这可能超出我的权限)


R

我不知道这个连接器的具体情况,但是我在mysql中看到的其他连接器都只是等待服务器在execute()或query()调用期间返回数据。最接近的是使用“unbuffered”版本,该版本会立即从execute()或query()返回,但当您尝试请求下一行时会被阻止,但它尚未从mysql服务器到达。

我不知道这个连接器的具体情况,但是我在mysql中看到的其他连接器都只是等待服务器在execute()或query()调用期间返回数据。最接近的版本是使用“unbuffered”版本,该版本立即从execute()或query()返回,但是,当您试图请求下一行但它尚未从mysql服务器到达时,它会被阻止。

mysql Connector的6.3.4版实现了异步方法,但它似乎只异步调用委托,因此它不会阻止调用线程,但不会从线程池中保存任何线程

而且,正如您所说,它没有回调参数

我相信可以正确地实现异步方法,但它们不是免费的


无论如何,异步数据库调用本身并不意味着更好的总体可伸缩性。我建议阅读文章“”以进行深入分析。

MySQL Connector的6.3.4版实现了异步方法,但它似乎只异步调用委托,因此不会阻塞调用线程,但不会从线程池中保存任何线程

而且,正如您所说,它没有回调参数

我相信可以正确地实现异步方法,但它们不是免费的


无论如何,异步数据库调用本身并不意味着更好的总体可伸缩性。我建议阅读文章“”进行深入分析。

MySQL线程支持在我看来基本上是事后才想到的

例如,您不能通过C API取消已发出的查询;相反,查询函数只是阻塞。要进行多个并发查询,每个查询需要一个线程


尝试使用Postgres。我没有使用过它(C API让我不喜欢所有的typedef),但它确实对多线程查询(例如异步调用等)有适当的支持。

MySQL线程支持在我看来基本上是事后才想到的

例如,您不能通过C API取消已发出的查询;相反,查询函数只是阻塞。要进行多个并发查询,每个查询需要一个线程


尝试使用Postgres。我没有使用过它(C API让我很反感——所有那些typedef),但它确实对多线程查询(例如异步调用等)提供了适当的支持。

我真的很想使用异步数据模型。Server2003在很多方面都支持这一点(比如查询网页、查询数据库(至少使用MSSQL)、套接字操作等)。这使得使用大量线程的需求消失,从而产生快速高效的代码。不幸的是,MySQL似乎已经实现了异步操作。或者看起来我真的想使用异步数据模型。Server2003在很多方面都支持这一点(比如查询网页、查询数据库(至少使用MSSQL)、套接字操作等)。这使得使用大量线程的需求消失,从而产生快速高效的代码。不幸的是,MySQL似乎已经实现了异步操作。或者说,它看起来像一个服务器:这不是关于到数据库的异步连接,而是关于我的程序是完全异步的(使用微软的CCR)。任何暂停(阻塞)的线程都会显著降低我的服务器的性能(因为我每个核心只使用1个线程)。@Toad:酷,如果你已经测量过了,那么请忽略我最后的评论。无论如何,我检查了devart的数据提供程序,它们似乎也在使用“异步委托”技巧,因此它们也不会保存任何线程。scheffer:这与数据库的异步连接无关,更重要的是,我的程序是完全异步的(使用Microsoft的CCR)。任何暂停(阻塞)的线程都会显著降低我的服务器的性能(因为我每个核心只使用1个线程)。@Toad:酷,如果你已经测量过了,那么请忽略我最后的评论。无论如何,我检查了devart的数据提供程序,它们似乎也在使用“异步委托”技巧,因此它们也不会保存任何线程。