Reduce inserts to LARGE_DATA in dao-hib ---------------------------------------
Key: ODE-640 URL: https://issues.apache.org/jira/browse/ODE-640 Project: ODE Issue Type: Improvement Components: BPEL Runtime Affects Versions: 1.3.2, 2.0 Reporter: Rafal Rusin Assignee: Rafal Rusin Fix For: 1.3.3, 2.0 Each time assign:copy is executed in one transaction (job), there's an insert to LARGE_DATA. The goal is to have only one insert for one variable update. Here are details for 20 copy operation on the same variable: for ODE-1.X: 07...@15:31:45 DEBUG (GeronimoLog.java:66) - Insert 0: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:49 DEBUG (GeronimoLog.java:66) - Beginning a new transaction 07...@15:31:49 DEBUG (GeronimoLog.java:66) - Commiting on org.apache.geronimo.transaction.manager.geronimotransactionmana...@10b755d... 07...@15:31:49 DEBUG (GeronimoLog.java:66) - Beginning a new transaction 07...@15:31:49 DEBUG (GeronimoLog.java:66) - Commiting on org.apache.geronimo.transaction.manager.geronimotransactionmana...@10b755d... 07...@15:31:51 DEBUG (GeronimoLog.java:66) - Beginning a new transaction 07...@15:31:51 DEBUG (GeronimoLog.java:66) - Commiting on org.apache.geronimo.transaction.manager.geronimotransactionmana...@10b755d... 07...@15:31:51 DEBUG (GeronimoLog.java:66) - Commiting ODE MEX {MyRoleMex#65536 [Client ID:127.0.1.1-122c18fcd42-3:0] calling {urn:/HelloWorld2.wsdl}HelloService.Hello(...)} 07...@15:31:51 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:51 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:52 DEBUG (GeronimoLog.java:66) - Beginning a new transaction 07...@15:31:53 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:53 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:53 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:53 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:53 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:53 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:53 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:53 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:54 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:55 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - Commiting on org.apache.geronimo.transaction.manager.geronimotransactionmana...@10b755d... 07...@15:31:56 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - prepareStatement: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@15:31:56 DEBUG (GeronimoLog.java:66) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) Here, in each copy operation Hibernate flushes dirty records to database, because of sql query for variable. for ODE-trunk: 07...@16:17:10 DEBUG (AbstractEntityPersister.java:2777) - Insert 0: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:14 DEBUG (SimpleScheduler.java:155) - Beginning a new transaction 07...@16:17:15 DEBUG (SimpleScheduler.java:170) - Commiting... 07...@16:17:15 DEBUG (SimpleScheduler.java:155) - Beginning a new transaction 07...@16:17:15 DEBUG (SimpleScheduler.java:170) - Commiting... 07...@16:17:18 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:18 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:18 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:18 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:19 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:20 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:21 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:22 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:22 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:22 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:22 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:22 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:22 DEBUG (LoggingInterceptor.java:148) - prepareStmt: insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) 07...@16:17:22 DEBUG (SQLStatementLogger.java:111) - insert into LARGE_DATA (BIN_DATA, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?) Here's somewhat better, because inserts are done after commit, but still there's to lot of them. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.