insert thru jdbc
Posted in 2003
The sql is : "INSERT INTO "+AVAILABILITY_TABLE +" (" +AVAILABILITY_ID +"," +AVAILABILITY_INDEX +"," +AVAILABILITY_INDEX_OJ +"," +AVAILABILITY_WHICHWAY +"," +AVAILABILITY_AIRLINE +"," +AVAILABILITY_FLIGHT_NUM +"," +AVAILABILITY_CLASSES +"," +AVAILABILITY_SEAT +"," +AVAILABILITY_CITY1 +"," +AVAILABILITY_CITY2 +"," +AVAILABILITY_DATE_DEPART +"," +AVAILABILITY_TIME_DEPART +"," +AVAILABILITY_TIME_ARRIVE +"," +AVAILABILITY_AVAIL +"," +AVAILABILITY_EXTRA_DAY +"," +AVAILABILITY_PLANE +"," +AVAILABILITY_LIST_NUM +"," +AVAILABILITY_OPTION_NUM +"," +AVAILABILITY_CONNECTOR_INFO +") values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; A developer is complaining that inserts thru JDBC is unacceptably slow. A print statment to log the time of an insert shows an avg of 38 milliseconds to insert a record, which translates to 38 records in a second. I don't think it is slow, but I want to make sure that the database is tuned properly for a JDBC use. Here is the relevant code. The insert is prepared. The code to insert is : public void setAvailabilityRecord(AvailabilityRecord ar) throws DataAccessException { DataAccessException de = null; int i=0; try { insertAvailabilityStmt.setString(++i, ar.getId()); insertAvailabilityStmt.setInt(++i, ar.getIndex()); insertAvailabilityStmt.setInt(++i, ar.getIndex_oj()); insertAvailabilityStmt.setString(++i, ar.getWhichway()); insertAvailabilityStmt.setString(++i, ar.getAirline()); insertAvailabilityStmt.setString(++i, ar.getFlight_num()); insertAvailabilityStmt.setString(++i, ar.getClasses()); insertAvailabilityStmt.setString(++i, ar.getSeat()); insertAvailabilityStmt.setString(++i, ar.getCity1()); insertAvailabilityStmt.setString(++i, ar.getCity2()); insertAvailabilityStmt.setString(++i, ar.getDate_depart()); insertAvailabilityStmt.setString(++i, ar.getTime_depart()); insertAvailabilityStmt.setString(++i, ar.getTime_arrive()); insertAvailabilityStmt.setString(++i, ar.getAvail()); insertAvailabilityStmt.setInt(++i, ar.getExtra_day()); insertAvailabilityStmt.setString(++i, ar.getPlane()); insertAvailabilityStmt.setInt(++i, ar.getList_num()); insertAvailabilityStmt.setInt(++i, ar.getOption_num()); insertAvailabilityStmt.setString(++i, ar.getConnectorInfo()); insertAvailabilityStmt.executeUpdate(); } } } The structure of the table is Info for the table: availability Owner = dba |------------------------------------------|-------------------|----------|---| |Column Name |Column Type |Null |Key| |------------------------------------------|-------------------|----------|---| |id |CHAR(25) |not null |PKY| |index |INTEGER |not null |PKY| |index_oj |INTEGER |not null |PKY| |whichway |CHAR(1) |not null |PKY| |airline |VARCHAR(10,1) |not null | | |flight_num |VARCHAR(6,1) |not null | | |classes |CHAR(1) |null | | |seat |CHAR(1) |not null | | |city1 |CHAR(3) |null | | |city2 |CHAR(3) |null | | |date_depart |CHAR(10) |null | | |time_depart |VARCHAR(5,0) |null | | |time_arrive |VARCHAR(7,0) |null | | |avail |CHAR(1) |null | | |extra_day |MINT |null | | |plane |CHAR(8) |null | | |list_num |MINT |not null |PKY| |option_num |MINT |null | | |connector_info |VARCHAR(255,0) |null | | |------------------------------------------|-------------------|----------|---| Primary key :(id,index,index_oj,list_num,whichway) Index :(index) Can something be done to improve the insert speed. TIA.