【问题标题】:Best practice for multithreaded applications that talk to a sql database与 sql 数据库对话的多线程应用程序的最佳实践
【发布时间】:2011-03-07 15:23:28
【问题描述】:

我有 20 台工厂机器全部处理任务。我有一个数据库适配器,它与机器存储所有信息的 MYSQL 数据库通信。让每个工厂机器面板都有自己的数据库适配器和更新程序线程是否安全?更新线程只是不断检查面板的当前任务 ID 是否与数据库中的当前任务 ID 相同,如果不是,它会使用有关新任务的信息重新填充面板。

我不确定连接太多是否会增加开销?

【问题讨论】:

  • 我认为 20 个连接不会杀死 MySQL 服务器:p

标签: java mysql multithreading connection


【解决方案1】:

RDBS 设计为在给定时间由多个客户端访问。这是他们的目的之一。

所以我认为 20 个,甚至 1000 个同时连接根本不会造成任何问题。

【讨论】:

  • +1 我同意;这就是 RDBMS 的设计目的。但是,通常连接需要服务器上的某些资源(例如内存),因此如果您真的想要数千(或数百万)个同时连接,则必须考虑这一点。
【解决方案2】:

与其让许多连接都执行相同的任务,不如创建一个进程来维护 taskid 列表(如果所有机器都不同)并检查数据库中的当前 taskid。如果更改了,则向所有机器(其 taskid 发生更改)发送消息以更新其面板。这将避免对数据库造成不必要的负载,并且还可以处理机器数量的增加而不会产生任何影响。

【讨论】:

  • 在尝试实施以前的事情时,我相信这就是我将要继续的方式。
【解决方案3】:

mysql 中的连接数由max_connections(允许同时连接的总数)系统变量和max_user_connections(每个用户的最大同时连接数)控制。查看您的服务器设置,并可能更改它们。不过默认数字肯定大于 20。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2010-10-08
    • 2016-01-03
    • 2020-05-05
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多