如何正确管理 MySQL 连接?

Posted

技术标签:

【中文标题】如何正确管理 MySQL 连接?【英文标题】:How to manage MySQL Connections properly? 【发布时间】:2013-05-13 09:11:47 【问题描述】:

我正在开发一个用 java 编写的服务器应用程序。 每秒最多有 30 个客户端请求,每个请求都会更新一个特定的 mysql 表条目。

所有服务器线程都使用一个 mySQL 连接,它们从一个单例类中获取它。然后服务器线程创建一个Statement并执行一个更新查询。

虽然我在执行后关闭了所有创建的语句,但服务器会在几个小时后停止更新 mySQL 表。

可能出了什么问题?这种设置是不是一种误解?

【问题讨论】:

你可以看看***.com/questions/1683949/…。您也可以实施或reuseconnection pool 来管理您的Connections 【参考方案1】:

也许,您的连接因超时而关闭。 您可以使用Connection#isValid 来验证您的连接是否仍然打开。

你可以看看Connection timeout for DriverManager getConnection。列出了几个很好的提示。

另外,您可以考虑在您的代码中使用Connection Pool。 Apache commons 是一个很好的起点。

【讨论】:

感谢您的回答,连接池似乎是可行的方法。我现在正在寻找一个简单的例子,因为我还不了解连接池的使用...... roseindia.net/tutorial/java/jdbc/jdbcconnectionpooling.html 我想我会这样尝试。让这个线程成为单例,在我的主类中启动它并让所有线程从中获取它们的连接是否正确?还有一个问题:对于大约 30 个请求/秒,连接池应该有多大?不幸的是我还不能测试它,必须等待晚上:) 不客气。它不需要从头开始实现连接池。有几个罐子可供选择:C3PO、DBCP 我猜你以后可以微调你的连接池。至于现在,设置任何合理的最小轮询大小和最大池大小,让连接池弄清楚如何调整池大小。

以上是关于如何正确管理 MySQL 连接?的主要内容,如果未能解决你的问题,请参考以下文章

密码正确Navicat连接mysql报1045

如何形成正确的 MySQL 连接字符串? [关闭]

如何正确的安装和连接MySQL服务

如何正确的安装和连接MySQL服务

如何正确连接 MySQL 数据库和 C# 应用程序?

如何使用自定义连接器正确终止 Django 中的 MySQL/MariaDB 连接