如何正确管理 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 来管理您的Connection
s
【参考方案1】:
也许,您的连接因超时而关闭。 您可以使用Connection#isValid 来验证您的连接是否仍然打开。
你可以看看Connection timeout for DriverManager getConnection。列出了几个很好的提示。
另外,您可以考虑在您的代码中使用Connection Pool。 Apache commons 是一个很好的起点。
【讨论】:
感谢您的回答,连接池似乎是可行的方法。我现在正在寻找一个简单的例子,因为我还不了解连接池的使用...... roseindia.net/tutorial/java/jdbc/jdbcconnectionpooling.html 我想我会这样尝试。让这个线程成为单例,在我的主类中启动它并让所有线程从中获取它们的连接是否正确?还有一个问题:对于大约 30 个请求/秒,连接池应该有多大?不幸的是我还不能测试它,必须等待晚上:) 不客气。它不需要从头开始实现连接池。有几个罐子可供选择:C3PO、DBCP 我猜你以后可以微调你的连接池。至于现在,设置任何合理的最小轮询大小和最大池大小,让连接池弄清楚如何调整池大小。以上是关于如何正确管理 MySQL 连接?的主要内容,如果未能解决你的问题,请参考以下文章