標準的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. java線程安全:線程安全嗎?
- 2. Spring mongoTemplate線程安全嗎?
- 3. Lparallel.queue線程安全嗎?
- 4. BoxClient線程安全嗎?
- 5. EventHubClient.SendBatchAsync - 線程安全嗎?
- 6. .NET:JsonMediaTypeFormatter線程安全嗎?
- 7. multiset equal_range線程安全嗎?
- 8. pip線程安全嗎?
- 9. com.google.cloud.datastore.Datastore線程安全嗎?
- 10. WNetGetResourceInformation線程安全嗎?
- 11. qsort線程安全嗎?
- 12. work_queue線程安全嗎?
- 13. .NET DateTime線程安全嗎
- 14. DynamoDBContext線程安全嗎?
- 15. 在Python線程安全嗎?
- 16. java.lang.reflect.Method線程安全嗎?
- 17. HttpContext.Current.Cache線程安全嗎?
- 18. UIFont線程安全嗎?
- 19. C#+ =線程安全嗎?
- 20. Go bytes.Buffer線程安全嗎?
- 21. SynchronizationContext.Post()線程安全嗎?
- 22. Guava Table線程安全嗎?
- 23. EPiServer線程安全嗎?
- 24. 是java.sql.Connection線程安全嗎?
- 25. 是CreateChildContainer()線程安全嗎?
- 26. 是Thread.getStackTrace()線程安全嗎?
- 27. Windows'rand_s線程安全嗎?
- 28. 是DocumentBuilder.parse()線程安全嗎?
- 29. 是javax.sql.DataSource線程安全嗎?
- 30. putStrLn線程安全嗎?
「..雖然你可以在線程之間共享連接(尤其是如果每個線程都有自己的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