jdbc 的executeupdate 之 oracle

Oracle JDBC: Update Batching 

Contrary to what the name suggests, batch updates or update batching allows invoking multiple DML operations including  Insert, Update, Delete, in one database call, minimizing network roundtrips. Oracle JDBC supports two distinct models of update batching: the standard model and Oracle-specific model. 
Standard Update Batching (explicit model)
In the standard update batching, you manually add operations to the batch and then explictly choose when to execute the batch. Recommended when code portability across different database and JDBC drivers is a higher priority than performance. 
Oracle Update Batching (implicit and faster model)
Defines a batch value, the number of operations you want to process per round trip,  which causes the statements to be automatically and implicitly processed as soon as that many operations have been added to the batch. Oracle update batching is usually faster than the standard update batching but only supports  PreparedStatement.  
Best Practices
 Always disable auto-commit mode with 'Update Batching'; 
 Use a batch size of around 10; 
 Don't mix the standard and Oracle models of 'Update Batching'. 
 Explicitly commit the transaction 
Example of Standard Update Batching
 The following example illustrates how you use the Standard JDBC  'Update Batching' feature. It assumes you have imported the oracle.driver.*interfaces. 
                    //ds is a DataSource object 
                    Connection conn = ds.getConnection(); 

                    //Always disable auto-commit when using update batching 
                    conn.setAutoCommit(false); 
                    Statement s = conn.createStatement(); 
                    s.addBatch("insert into dept values ('23', 'Sales', 'USA')"); 
                    s.addBatch("insert into dept values ('24', 'Blue Sky', 'Montana')"); 
                    s.addBatch("insert into dept values ('25', 'Applications', 'India')"); 
                    //Manually execute the bacth 
                    s.executeBatch(); 
                    s.addBatch("insert into dept values ('26', 'HR', 'Mongolia')"); 
                    s.executeBatch(); 

                    conn.commit(); 
                    ps.close(); 
                    ... 
  

Example of Oracle Update Batching
The same example using the Oracle 'Update Batching' extension. It assumes you have imported the oracle.driver.*interfaces. 
                    //ds is a DataSource object 
                    Connection conn = ds.getConnection(); 

                    //Always disable auto-commit when using update batching 
                    conn.setAutoCommit(false); 
                    PreparedStatement ps = 
                    conn.prepareStatement("insert into dept values (?, ?, ?)"); 
                    //Change batch size for this statement to 3 
                    ((OraclePreparedStatement)ps).setExecuteBatch (3); 
                    //--------#1------------ 
                    ps.setInt(1, 23); 
                    ps.setString(2, "Sales"); 
                    ps.setString(3, "USA"); 
                    ps.executeUpdate(); //JDBC queues this for later execution 
                    //--------#2------------ 
                    ps.setInt(1, 24); 
                    ps.setString(2, "Blue Sky"); 
                    ps.setString(3, "Montana"); 
                    ps.executeUpdate(); //JDBC queues this for later execution 
                    //--------#3------------ 
                    ps.setInt(1, 25); 
                    ps.setString(2, "Applications"); 
                    ps.setString(3, "India"); 
                    ps.executeUpdate(); //The queue size equals the batch value of 3 
                    //JDBC sends the requests to the database 
                    //--------#1------------ 
                    ps.setInt(1, 26); 
                    ps.setString(2, "HR"); 
                    ps.setString(3, "Mongolia"); 
                    ps.executeUpdate(); //JDBC queues this for later execution 

                    ((OraclePreparedStatement)ps).sendBatch(); // JDBC sends the queued request 
                    conn.commit(); 
                    ps.close(); 
                    ... 

 
 

你可能感兴趣的:(oracle,jdbc,performance)