标准的MySQL JDBC驱动程序是线程安全的吗?具体而言,我想跨所有线程使用单个连接,但每个语句只能在单个线程中使用。有某些情况是安全的,而其他情况不是?你在这里有什么经验?MySQL Connector/JDBC线程安全吗?
13
A
回答
8
每个连接启动/提交事务。除非你正在做一些非常具体的事情(我不能真正想到一个例子,说实话),你最好用连接池和每个线程的连接。
4
如果autocommit = 1,那么让多个线程共享同一个连接是非常可行的,前提是对连接的访问是同步的。如果autocommit = 0,则必须通过某种互斥体控制对连接的访问,直到提交发生。
除非您的应用程序的连接数量绝对有限,否则连接池可能是更可行的选择。
0
根据我最近的经验,Connection
对象在Connector/J 5.1.33中不是线程安全的。
我遇到了bug 67760中描述的死锁情况。不知道是否是一个错误,但在讨论一个合理的建议是:
[2012年12月12日20点33分]托德农民
,请不要使用多个线程 一个连接对象而不适当的同步。连接器/ J - 更重要的是, MySQL客户端 - 服务器协议 - 不允许同时使用相同连接对象的 操作。如果必须跨线程共享Connection对象 ,则应用程序代码作者应负责确保操作正确序列化。
相关问题
- 1. Enum.TryParse - 线程安全吗?
- 2. HtmlCleaner线程安全吗?
- 3. 在Python线程安全吗?
- 4. 是DatagramSocket.send线程安全吗?
- 5. XCGLogger线程安全吗?
- 6. jCaptcha线程安全吗?
- 7. 列表线程安全吗?
- 8. 这些线程安全吗?
- 9. ValueExpression线程安全吗?
- 10. SecureRandom线程安全吗?
- 11. KeyPairGenerator.generateKeyPair()线程安全吗?
- 12. 是TcpClient.Available线程安全吗?
- 13. Swift Calendar线程安全吗?
- 14. 此线程安全吗?
- 15. 线程安全(是吗?)
- 16. RegSetValueEx线程安全吗?
- 17. SecurityContextHolder线程安全吗?
- 18. PCRE pcre_exec线程安全吗?
- 19. SoapHttpClientProtocol线程安全吗?
- 20. python logger线程安全吗?
- 21. SynchronizationContext.Post()线程安全吗?
- 22. Interop.Domino dll线程安全吗?
- 23. udev线程安全吗?
- 24. JMS QueueSender线程安全吗?
- 25. NSSortDescriptor线程安全吗?
- 26. github3py线程安全吗?
- 27. NSKeyedArchiver线程安全吗?
- 28. MSMQ线程安全吗?
- 29. org.exolab.castor.xml.schema.Schema线程安全吗?
- 30. Keras线程安全吗?
“..虽然你可以在线程之间共享连接(尤其是如果每个线程都有自己的Statement),但这通常不是一个好主意.Java API并不是真正用于线程安全的方式,并且大多数JDBC连接(包括MySQL的)一次只能处理一个查询。“http://forums.mysql.com/read.php?39,171022,171195#msg-171195 – Tim 2009-07-30 22:19:43
@Tim,是的,我之前看过这篇文章。尽管如此,它没有详细讨论任何可能的问题,所以我觉得听到别人的经验会很有趣。另外,我觉得这是一个有效的问题,属于堆栈溢出问题数据库。随意发布该链接作为答案。 :) – 2009-07-30 22:23:07
请考虑使用连接池。 – 2009-07-30 22:32:25