我试图启动一个hsqldb的嵌入式版本,并且它可以很好地与包含的工具一起工作,它们不会很慢或者其他任何东西。hsqldb极其缓慢的SELECT * FROM [table]
但是,当我尝试使用下面的代码获取20行,它需要长达10秒的所有结果都印
Class.forName("org.hsqldb.jdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://127.0.0.1/woopwoop", "SA", "");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM ttris_users");
while(rs.next())
{
output += "<tr>";
output += "<td>" + rs.getString("id") + "</td>";
output += "<td>" + rs.getString("name") + "</td>";
output += "<td>" + rs.getString("password") + "</td>";
output += "<td>" + rs.getString("email") + "</td>";
//name, password, email
output += "</tr>";
}
我初始化一个非常简单的方法服务器之前,这可能是为什么它运行缓慢,我如何优化它?
org.hsqldb.server.Server server = new org.hsqldb.server.Server();
server.setDatabaseName(1, "woopwoop");
server.setDatabasePath(1, "C:\\ttris\\db\\");
server.start();
在该被印刷在控制台日志,它显示了查询倍
[编辑] 继承人日志
[[email protected]]: [Thread[HSQLDB Server @1050e1f,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=37523,localport=9001]) entered
[[email protected]]: [Thread[HSQLDB Server @1050e1f,5,main]]: handleConnection() exited
[[email protected]]: [Thread[HSQLDB Connection @3e0ebb,5,HSQLDB Connections @1050e1f]]: 0:Trying to connect user 'SA' to DB (woopwoop)
[[email protected]]: [Thread[HSQLDB Connection @3e0ebb,5,HSQLDB Connections @1050e1f]]: 0:Connected user 'SA'
[[email protected]]: 0:SELECT * FROM ttris_users
[[email protected]]: [Thread[HSQLDB Server @1050e1f,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=37524,localport=9001]) entered
[[email protected]]: [Thread[HSQLDB Server @1050e1f,5,main]]: handleConnection() exited
[[email protected]]: [Thread[HSQLDB Connection @76fba0,5,HSQLDB Connections @1050e1f]]: 1:Trying to connect user 'SA' to DB (woopwoop)
[[email protected]]: [Thread[HSQLDB Connection @76fba0,5,HSQLDB Connections @1050e1f]]: 1:Connected user 'SA'
[[email protected]]: 1:SELECT * FROM ttris_users
[[email protected]]: [Thread[HSQLDB Server @1050e1f,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=37525,localport=9001]) entered
[[email protected]]: [Thread[HSQLDB Server @1050e1f,5,main]]: handleConnection() exited
[[email protected]]: [Thread[HSQLDB Connection @16dadf9,5,HSQLDB Connections @1050e1f]]: 2:Trying to connect user 'SA' to DB (woopwoop)
[[email protected]]: [Thread[HSQLDB Connection @16dadf9,5,HSQLDB Connections @1050e1f]]: 2:Connected user 'SA'
[[email protected]]: 2:SELECT * FROM ttris_users
的问题是在第一条目位于正在使用该数据的servlet中,现在已解决
这是为什么我很困惑自己的确切原因。这是一个非常简单的例子,我试图从官方文档中学习。我已更正帖子以指示其一个表格和20行 – 2011-04-06 12:01:19
在执行前后放置日志记录,并在每个日志中输出当前时间,以便您可以看到延迟的位置。用这种方式跟踪代码,找出需要这么久的代码。 – 2011-04-06 12:04:52
根据您提供的信息,问题的最可能原因是您提供的代码之外的某个循环。你如何初始化这段代码?它坐在哪里?它是在一个线程?你在哪里开始线程?某处你做了27次导致这段代码被执行的东西。顺便问一下,它总是27次? – 2011-04-06 12:09:02