All Products
Search
Document Center

Lindorm:Tulis data dengan cara yang efisien

Last Updated:Mar 29, 2026

Gunakan PreparedStatement dengan eksekusi batch untuk menulis beberapa record ke LindormTSDB dalam satu panggilan JDBC, sehingga mengurangi jumlah round trip dan meningkatkan throughput penulisan.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Cara kerja

PreparedStatement memungkinkan Anda mendefinisikan pernyataan INSERT sekali saja dan mengeksekusinya berulang kali dengan nilai parameter yang berbeda. Dengan memanggil addBatch() untuk setiap baris, lalu executeBatch(), semua baris dikirim dalam satu round trip ke database, yang jauh lebih efisien dibandingkan mengeksekusi pernyataan INSERT satu per satu.

Semua parameter kolom di-bind berdasarkan posisi menggunakan placeholder tanda tanya (?). Indeks yang diberikan pada setiap pemanggilan setXXX() harus sesuai dengan urutan kolom dalam pernyataan INSERT.

Tulis data dalam batch

Langkah-langkah berikut menggunakan tabel kualitas udara aqm dari Design a time series table sebagai contoh.

  1. Buat objek connection. Lihat Use Lindorm JDBC Driver to connect to and use Lindorm TSDB (recommended) untuk pengaturan koneksi.

  2. Buat objek PreparedStatement dengan pernyataan INSERT.

    StringBuilder builder = new StringBuilder();
    builder.append("INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2) ");
    builder.append("VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
    
    PreparedStatement preparedStmt = connection.prepareStatement(builder.toString());
  3. Bind parameter untuk setiap baris dan eksekusi batch tersebut.

    for (int i = 0; i < batchSize; i++) {
        // Bind nilai sesuai urutan kolom dalam pernyataan INSERT.
        // city, district, id, ts, pm25, pm10, so2, no2 adalah variabel lokal.
        preparedStmt.setString(1, city);
        preparedStmt.setString(2, district);
        preparedStmt.setString(3, id);
        preparedStmt.setTimestamp(4, ts);
        preparedStmt.setDouble(5, pm25);
        preparedStmt.setDouble(6, pm10);
        preparedStmt.setDouble(7, so2);
        preparedStmt.setDouble(8, no2);
    
        // Masukkan baris ke antrian untuk eksekusi batch.
        preparedStmt.addBatch();
    }
    
    // Tulis semua baris yang telah di-antri ke database.
    int[] results = preparedStmt.executeBatch();
    
    // results[i] berisi jumlah update untuk setiap baris dalam batch.

Catatan penggunaan

Parameter binding: Di LindormTSDB, PreparedStatement hanya mendukung placeholder tanda tanya (?). Indeks pada setiap pemanggilan setXXX() harus tepat sesuai dengan posisi kolom dalam pernyataan INSERT.

Ukuran batch: Ukuran batch mengatur keseimbangan antara throughput dan latensi — batch yang lebih besar mengurangi jumlah round trip tetapi meningkatkan penggunaan memori dan latensi per permintaan. Batch yang lebih besar tidak selalu menghasilkan performa penulisan yang lebih baik; nilai optimal bergantung pada struktur tabel Anda.

Struktur tabelDirekomendasikan batchSize
Satu kolom field, hingga lima kolom tag5.000
Struktur lainnyaSesuaikan berdasarkan throughput dan latensi yang diamati di lingkungan Anda

Langkah berikutnya