Java 一种简单的JDBC客户端中间件仿真
我试图实现一个简单的客户机中间件数据库体系结构,客户机将请求发送到中间件,然后在数据库上执行请求,最后将答案返回给客户机 为了测试系统,我必须使用tpc-h基准测试,它只是一个巨大查询的测试台,为了测试系统的响应时间和吞吐量,必须执行这些查询 我面临的问题让我抓狂:客户端向中间件发送150个独立的insert查询,然后中间件使用“executeUpdate”处理每个查询,下面是我的一段代码:Java 一种简单的JDBC客户端中间件仿真,java,database,jdbc,client,middleware,Java,Database,Jdbc,Client,Middleware,我试图实现一个简单的客户机中间件数据库体系结构,客户机将请求发送到中间件,然后在数据库上执行请求,最后将答案返回给客户机 为了测试系统,我必须使用tpc-h基准测试,它只是一个巨大查询的测试台,为了测试系统的响应时间和吞吐量,必须执行这些查询 我面临的问题让我抓狂:客户端向中间件发送150个独立的insert查询,然后中间件使用“executeUpdate”处理每个查询,下面是我的一段代码: Connection cc = c.getConnection(); Statement s = cc.
Connection cc = c.getConnection();
Statement s = cc.createStatement();
int r = s.executeUpdate(tmpM.getMessage());
tmpR.add(c.getServerName()+":"+c.getDatabaseName()+": "+ r +" row(s) affected.");
s.close();
cc.close();
如果我只是打印所有查询,然后用phpPgAdmin手动执行它们,然后我与pgAdmin一起检查条目插入结果是否正确,而如果我使用我的代码,它不会添加所有查询,而是只添加其中的一部分
我做了很多调试,结果所有的查询都被发送到数据库(代码执行150次,返回150次1,正确答案),但结果不正确
有人对如何解决这个问题有什么建议吗
先谢谢你
-g为什么不尝试使用事务,而不是为每个insert语句打开/关闭连接。 从Oracle JDBC教程:
"A transaction is a set of one or more statements that is executed as a unit,
so either all of the statements are executed, or none of the statements is
executed."
我认为这与数据库连接的永久打开和关闭有关。