我如何在DBX连接池的工作?(How do I make connection pooling wo

2019-07-30 09:50发布

好吧, 我设法得到委托驱动程序设置正确,但连接池仍然给了我很多的麻烦。

从文档中给出的说明,看来连接池应该像这样工作:

  • 建立DBXPool司机代表一个单一的,全球Connection对象上
  • 使用此连接对象的所有调用到数据库
  • 每个数据库调用将通过委托司机获得自动地路由到所独有的它的线程,通过连接池拥有的连接。

在实践中,我发现,一切似乎仍然受到全球Connection对象来处理,导致各种奇怪的比赛条件和崩溃,当我尝试从多个并发线程的数据库查询。

如果它是相关的,我没有很多具体的DBX组件定义; 我一般运行通过调用查询Connection.Execute方法。

任何想法,我做错了什么? 我错过了一步的地方,或者说我的DBXPool委托司机是如何工作的坏理解?

Answer 1:

德尔福配备了一个示例项目DelegatesSample。 在我的机器,它位于\文档\的RAD Studio在\ 8.0 \的Samples \德尔福\数据库\ dbExpress的\代表。

池中的每个连接都有它自己的 TDBXConnection对象。 在样本源代码中的每个连接由调用创建到TDBXConnectionFactory.GetConnectionFactory.GetConnection()

正如你知道的,当然,在一个线程每个查询应该有它自己的连接对象。

菲利克斯科利柏也有很大的文章德尔福DBX4编程。 在那里,他介绍了除其他议题也集中使用池委托驱动程序的数据库连接。

至少这些样本有助于我的了解如何连接池的作品!



文章来源: How do I make connection pooling work in DBX?