Day 13: Update Batching Di Database Oracle


Learning In HomeOriginal Date: 25 Januari 2009

Untuk mengurangi round trips ke database, aku bisa memakai update batching di sisi aplikasi JDBC. Tanpa batching, setiap statement SQL dikerjakan di sisi client, akan terjadi komunikasi data melalui jaringan dari client ke server dan sebaliknya. Untuk mengurangi beban jaringan, aku dapat mengumpulkan statement-statement yang ada, kemudian mengirimnya dalam satu kali putaran saja. Update batching di Oracle hanya berlaku untuk PreparedStatement.

Untuk mengatur nilai batch, aku memanfaatkan setDefaultExecuteBatch(int) dari object OracleConnection. Selain itu, agar batching dapat berjalan sesuai harapan, aku harus mematikan fitur autocommit, seperti pada contoh kode berikut:


OracleConnection cn = 
  (OracleConnection) 
  ods.getConnection();
cn.setAutoCommit(false);
cn.setDefaultExecuteBatch(10);

Setelah itu, jika kode berikut dikerjakan:


for (int i=0; i<10; i++) {
  ps.setString(1, 
    "TEST" + i);
  ps.setString(2, 
    "TEST" + i);
  ps.setInt(3, i);
  updatedRecord = 
    ps.executeUpdate();
  System.out.println(
   "Updated Record = " + 
     updatedRecord);
}

maka hasilnya adalah:


Updated Record = 0
Updated Record = 0
Updated Record = 0
Updated Record = 0
Updated Record = 0
Updated Record = 0
Updated Record = 0
Updated Record = 0
Updated Record = 0
Updated Record = 10

Terlihat bahwa insert yang sesungguhnya terjadi pada saat aku menyisipkan record kesepuluh, dimana sepuluh record dikirim bersamaan ke database Oracle.

Jika aku tidak ingin menunggu hingga nilai default batch, aku dapat langsung memanggil sendBatch() milik object OraclePreparedStatement. Untuk membatalkan batch, aku dapat memakai method clearBatch() yang juga milik OraclePreparedStatement.

O ya, untuk mengurangi round trips pada query SELECT, aku dapat menggunakan setRowPrefetch(int) milik OracleStatement, atau setDefaultRowPrefetch(int) milik OracleConnection.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: