自定义连接池慢 (JAVA)?
Custom Connection Pool slow (JAVA)?
对于我的项目,我们被要求实现我们自己的连接池。我们不允许使用来自 jdbc 的 PGPoolingDataSource。当我使用 jdbc 池时,我的程序非常快,使用我自己的连接池时它不可预测并且慢得多。我的连接使一些任务等待很长时间,jdbc 池不会发生这种情况。
我正在使用 Arrayblockingqueue 来实现我的连接池,我只是创建一个预先设定的连接数,然后让客户借用并放回。
我的意思是这对我来说似乎很有意义,而且很有效。但是它很慢,有时任务需要很长时间才能完成,无论如何我可以改进它吗?让它更快更可靠?
您使用错误的数据结构来存储连接 ArrayBlockingQueue
是 FIFO 结构,这会减慢您的处理速度,使用 ConcurrentLinkedQueue
是合理且更快的选择。
对于我的项目,我们被要求实现我们自己的连接池。我们不允许使用来自 jdbc 的 PGPoolingDataSource。当我使用 jdbc 池时,我的程序非常快,使用我自己的连接池时它不可预测并且慢得多。我的连接使一些任务等待很长时间,jdbc 池不会发生这种情况。
我正在使用 Arrayblockingqueue 来实现我的连接池,我只是创建一个预先设定的连接数,然后让客户借用并放回。
我的意思是这对我来说似乎很有意义,而且很有效。但是它很慢,有时任务需要很长时间才能完成,无论如何我可以改进它吗?让它更快更可靠?
您使用错误的数据结构来存储连接 ArrayBlockingQueue
是 FIFO 结构,这会减慢您的处理速度,使用 ConcurrentLinkedQueue
是合理且更快的选择。