.NET MySqlTransactions 是不是在本地进行批处理/缓冲?

Posted

技术标签:

【中文标题】.NET MySqlTransactions 是不是在本地进行批处理/缓冲?【英文标题】:Are .NET MySqlTransactions batched/buffered locally?.NET MySqlTransactions 是否在本地进行批处理/缓冲? 【发布时间】:2013-03-19 00:40:03 【问题描述】:

假设您有一百万行要插入到远程数据库中。

不费吹灰之力,您已执行以下操作来提高性能:

    重用单个 mysql 连接 创建一个准备好的MySqlCommand,您将在所有插入中重复使用它 使用MySqlTransaction 防止在每次插入后自动提交,并且仅在完成批处理后调用transaction.Commit()

问题很简单:MySQL Connector.NET 在这些情况下是否会自动执行事务批处理,还是应该将多行单独连接到一个 INSERT INTO foo(bar) VALUES (..), (..), (..), (..), ...; 并在事务中执行多个?

什么时候改用MySqlBulkLoader 是个好主意?

【问题讨论】:

我不知道这一点,但我不认为这种行为存在于 MySql 连接器中,因为人们不希望它存在。尽管有道理,但这并不是大多数开发人员在多次调用 command.ExecuteNonQuery 时所想的。不过,这是个好问题! @tucaz 合理的逻辑,很好的推理。如果我是编写适配器的人,我会实现它,但这只是我。我知道它是开源的,我可能应该去下载它自己看看...... grumble 【参考方案1】:

回答:不,他们不是。即使在使用编译语句时,每次添加参数时,数据都会通过网络发送,然后在执行时进行更多的远程通信。

【讨论】:

以上是关于.NET MySqlTransactions 是不是在本地进行批处理/缓冲?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Dlib.Net(FaceRecognition.Net) 检测人脸是不是倒置

NHibernate 是不是与 Hibernate 互操作?如果没有,是不是有适用于 Java 和 .NET 的框架?

Subsonic 是不是与 .Net 4.0 兼容

如何检查程序是不是使用 .NET?

检查用户是不是有角色 Discord.net

.NET 是不是有办法检查列表 a 是不是包含列表 b 中的所有项目?