日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

如何高效地寫入數據

本文介紹通過JDBC向時序引擎中寫入數據的方法。

基于JDBC開發高效數據寫入的應用

對于使用JDBC進行應用開發的場景,為了達到高效數據寫入的目的,推薦使用JDBC中的PreparedStatement實現INSERT語句的批量寫入。具體步驟如下:

  1. 使用JDBC創建Connection對象。

    通過JDBC建立連接的方法,詳細可參見通過JDBC Driver連接使用(推薦)

  2. 創建PreparedStatement對象并指定帶參數的INSERT語句。

    以"如何為時序數據建表"章節中介紹的示例為基礎,創建PreparedStatement的方法如下所示:

        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. PreparedStatement對象進行批量的輸入參數綁定,并實際執行寫入。

    對于上一步的INSERT語句,綁參的示例代碼如下:

        for (int i = 0; i < batchSize; i++) {
            // 按INSERT語句中的列參數指定順序依次綁參
            // 下述代碼中的 city, district, id, ts, pm25等都是用于綁參的局部變量
            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);
            
            // 加入批次
            preparedStmt.addBatch();
        }
    
        // 執行一個批次的寫入
        int[] results = preparedStmt.executeBatch();
    
        // 從results中查詢實際寫入的數據記錄數。以下略
    }
說明

  • 時序引擎的JDBC中的PreparedStatement只支持無命名參數(即通過占位符“?”指定參數),因此在實際調用PreparedStatement的綁參API時,需要確保setXXX()方法中指定的參數index所對應的參數值與INSERT語句中占位符所對應列一致。

  • PreparedStatement在執行executeBatch()前綁定的參數批次并不是越多越好,其性能表現往往與表定義相關。根據實際測試的結果,如果表定義中僅有1個Field,并且TAG列的個數不超過5個時,PreparedStatement執行的一個批次的個數為5000(即上述代碼示例中的batchSize變量大小)性能最優。