我的应用程序在多个线程中执行多个查询
现在我正在为每个查询创建新连接,我想使用池来提高效率.
Apache DBCP池可以同时在多个线程中工作,还是会在每个线程上"阻塞"某些同步方法?
如果它阻止,我可以使用其他东西吗?
UPDATE
在本文中:链接 说明:
由于所有Oracle JDBC API方法都是同步的,如果两个线程同时尝试使用连接对象,则会强制其中一个等待,直到另一个完成其使用.
所以我猜DBCP将无法解决这个问题?
我也意识到在这种情况下池不会帮助我,因为每个线程都会请求连接,并且线程每次都会生成一个新连接(直到某些线程结束并返回到池的连接)
当我运行这个查询时,我得到更多的行,然后在没有 ROW_NUMBER () 行的情况下进行查询:
SELECT DISTINCT id, value,
ROW_NUMBER () over (partition by (id) ORDER BY value desc NULLS LAST ) max
FROM TABLE1
WHERE id like '%1260' ORDER BY id ASC
Run Code Online (Sandbox Code Playgroud)
VS
SELECT DISTINCT id, value
FROM TABLE1
WHERE id like '%1260' ORDER BY id ASC
Run Code Online (Sandbox Code Playgroud)
为什么会发生以及如何解决?