【问题标题】:Leave MySQL connection idle to be reused or connect on demand, what about classes?让 MySQL 连接空闲以重用或按需连接,类呢?
【发布时间】:2011-09-16 02:50:48
【问题描述】:

我目前正在使用 winforms 和 .NET 4.0 开发桌面应用程序,我已经下载了适用于 .NET 4.0 的最新 MySQL 连接器,但我对使用它的最佳方式有一些疑问。

注意:只是想指出这个应用程序仅供个人使用,将在我自己的服务器上运行。

  • 我的应用程序已连接到服务器,但始终不接收信息,我应该按需连接到 MySQL 以处理接收到的数据,还是应该让与 MySQL 的连接保持打开状态,只要应用程序处于打开空闲状态,因此可以在接收到数据时重复使用它?

  • 我一直在寻找一些关于在 c# 中使用 MySQL 的最新文档,但我能找到的只是 2006 年的教程,是否有一些比较新的好例子可以用作参考(这是我的第一次将 MySQL 与 c# 一起使用)特别是显示如何使用 DataTable 东西序列化/反序列化数据的文档会非常受欢迎吗?

    我很乐意提供一些你们经常用来建立连接或从中提取数据的类的代码示例。

  • 我正在考虑的另一个与此无关的问题是:我何时应考虑通过直接 MySQL 连接与我的应用程序使用 Web API?

【问题讨论】:

  • 在几乎所有情况下,都应根据需要打开和关闭连接。不要让它们长时间打开
  • @Mitch Wheat 但反复连接不会对性能产生更大的影响吗?如果我现在得到一些要处理的东西,并且在接下来的一个小时后每隔 30 秒它会做一些事情,它会为每个人连接和断开连接,打开它会不会更方便?
  • 查看我之前的建议。连接会回到池中,并被重用。

标签: c# mysql winforms .net-4.0


【解决方案1】:

在我看来,您应该在用户操作开始时打开连接并在结束时关闭它。这不会显着影响性能,因为连接与执行单个查询一样快。

但是,如果您为每个子操作打开/关闭连接,则可能会导致性能下降。确保你不要那样做。


每次使用新连接的主要动机是可以避免以下几类错误:

  • “早上”错误,数据库在一段时间后消失或断开连接(或状态防火墙超时等)
  • “陈旧状态”错误,其中某些先前操作使连接处于“断开”状态并导致下一个操作失败或行为异常(例如“SET names koi8”)

可以通过执行 mysql_change_user 来重置 mysql 连接(如果您的 API 支持),但这与重新连接几乎相同(它只是使用相同的 tcp 连接)。

【讨论】:

  • +1 感谢您的回复,我正在考虑让它打开 5 分钟,如果之后没有人使用它,它会关闭,或者如果有人使用它,它将保留另一个5分钟,你怎么看?你会碰巧有任何关于你经常使用你的连接或任何材料来链接我的课程吗?再次感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 2020-04-29
  • 2014-12-04
  • 1970-01-01
  • 2022-01-18
  • 2011-11-13
相关资源
最近更新 更多