【问题标题】:Connection Pooling in a small application小型应用程序中的连接池
【发布时间】:2011-04-14 07:58:03
【问题描述】:

我有几个关于连接池和最佳实践的简单问题。 我正在计划和编写一个依赖 MySQL 数据库的小型应用程序。在这个应用程序中,我使用可以创建连接的模块和插件。该应用程序可以直接访问 MySQL 数据库,并且它可能是唯一连接到数据库的客户端。

这是我的第一个问题:连接池有意义吗?它无关紧要还是我应该禁用它?你有什么经验?

另一方面,在我的公司,我们开发了另一种软件,它有一个 MySQL 数据库服务器和许多客户端。每个客户端都可以打开多个窗口,在这些窗口中可以激活多个连接。这个软件很有可能会使用我的新应用程序的基本概念。客户端直接与数据库连接。所以我想编写一个处理池和组织连接的服务器应用程序会很有意义,对吗?让每个客户端都使用自己的连接池有多大意义?我们谈论的是具有 1-10 个连接的 1-50 个客户端。

您认为最好编写一个小型服务器应用程序来处理连接池吗?

我之所以这么问,是因为我真的不知道什么时候连接池有意义,什么时候没有,以及如何使用中小型客户端应用程序来处理它。我正在寻找您的经验的一些输入。 :) 我希望这些问题不会尴尬。 ^^

您好,
西蒙

P.S.:这是一个基于 Windows 的应用程序。不是网络服务。

【问题讨论】:

    标签: c# mysql connection-pooling


    【解决方案1】:

    连接池将为您提供额外的性能,实际上没有它,即使对于小型应用程序,性能也可能是一个问题(这取决于调用次数、数据等)。

    考虑正确处理您的连接,以避免“达到最大池大小”错误和超时。一个好的做法是像这样处理您的连接:

    using (SqlConnection conn = new SqlConnection(myConnectionString))
      {
            conn.Open();
            doSomething(conn);
      }
    

    使用保证,连接将被正确关闭/处置。查看this 文章,该文章提供了一些可应用于 MSSQL 或 MySQL 的技巧。

    还要考虑使用存储过程。希望这可以帮助您入门。

    【讨论】:

    • 回复晚了,抱歉。你的帖子只对一个小计划有帮助。我对实际体验更感兴趣,而不是对入门的提示。至于使用的部分。如果您使用连接池,连接实际上并没有物理关闭,它只是返回到池中并稍后关闭或重用。否则我完全同意。此外,人们不应该忘记在退出应用程序之前清除池,否则连接不会正确关闭。链接的文章有一些很好的信息,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2013-05-23
    相关资源
    最近更新 更多