Do you have dynamic parts in your insert?
First start transaction and only then use batch.
Maybe hsqldb doesn't support PreparedStatements in real?
Add this parameter in your db url "cachePrepStmts=true" (for example,
jdbc:mysql://localhost:3306/test?allowMultiQueries=true&cachePrepStmts=true).
Maybe this can help
Best,
Aram
________________________________
Aram Mkhitaryan
Developer
Lycos Armenia CJSC
9 Alex Manukyan str,
Yerevan 375070, Armenia
Tel: +374 10 512411
Mobile: +374 91 518456
E-mail: [EMAIL PROTECTED]
Web: www.lycos-europe.com
-----Original Message-----
From: Kenji Nakamura [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 02, 2006 8:52 PM
To: [email protected]
Subject: Is PreparedStatement reused on insert?
Hi,
I'm evaluating iBatis 2.1.7, and encountered a performance problem.
The benchmark is simply taking a sequential file with approximately
16,000 lines, and populate them into HSQLDB (1.8.0.1) with 20 lines
of batch. I see iBatis version is two to three times slower than
plain vanilla JDBC version.
I put a profiler, and it indicates
com.ibatis.sqlmap.engine.execution.SqlExecutor#excuteUpdate() creates
an instance of PreparedStatement every time calling
SqlMapClient#insert(), and it is actually created at line 77 of the
method.
Is there a way to keep an instance of PreparedStatement for an Id and
reuse it? At least creation of PreparedStatement isn't a cheap
operation in HSQLDB, which takes up 51% of whole execution time in my
benchmark.
Thanks in advance,
Kenji