.Net连接池与MySQL临时表

5
我们有一个MySQL数据库,用于我们的.NET MVC Web应用程序。我们使用连接池实现了一些很棒的性能优势。
在一些关键存储过程中,我们也进行了相当重的处理。
它们创建了几个临时表和用户变量,这些对象在连接的生命周期内保持有效。然而,启用连接池后,这些对象不会被重置/删除。
在这种情况下,我是否应该重新初始化用户变量并在临时表中进行删除/重建?
可以保证不会同时访问连接,因此在执行/填充临时表等操作时不应出现任何并发问题。

我会尝试在每个事务中处理临时对象,而不是在每个连接中处理。 - Adriano Repetti
由于临时表只有在连接关闭时才会被删除,因此在连接池中使用并不是一个好主意。那么真实的表呢? - Marcio J
1个回答

4
因此,答案就是每次重新创建之前简单地删除临时表。由于它始终只能一次运行一个命令,因此不存在并发问题。

1
我可以确认,当处理临时表时,.NET连接池会导致问题,因为我一直收到以下错误:MySql.Data.MySqlClient.MySqlException: 表'blah'已经存在。在每个查询结束时删除表或在创建临时表之前立即删除它是唯一可行的解决方案,因为无法保证上一个连接已真正关闭。有趣的是,如果我在两个使用相同临时表的命令之间放置一个非常长的休眠时间,第一个连接最终会“关闭”,从而删除临时表。 - Randy Burden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接