av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

創(chuàng)新互聯(lián)OceanBase教程:OceanBase批處理

通過將多個 UPDATE 或 INSERT 語句分組為一個批處理,將整個批處理發(fā)送到數(shù)據(jù)庫并一起處理,可以減少數(shù)據(jù)庫的往返處理次數(shù),從而提高應用程序性能。

OceanBase Connector/J 使用服務器 PrepareStatement 和 Statements 作為與數(shù)據(jù)庫進行批處理通信的標準,并通過 allowMultiQueries 和 rewriteBatchedStatements 兩個參數(shù)進行管理。如果將 allowMultiQueries 或 rewriteBatchedStatements 選項設置為 true,則 OceanBase Connector/J 將僅使用文本協(xié)議。PrepareStatement(參數(shù)替換)在客戶端由驅(qū)動程序處理。

rewriteBatchedStatements 對于插入查詢,用于重寫 batchedStatement 以在單個 executeQuery 中執(zhí)行。當它處于活躍狀態(tài)時,useServerPrepStmts 選項被設置為 false。allowMultiQueries 為 true 時允許多值查詢。

在 Oracle 和 MySQL 兩種模式下,OceanBase Connector/J 對于批處理的設置會有不同。

Oracle 模式下的批處理

PrepareStatement 處理方式

useServerPrepStmts

rewriteBatchedStatements

allowMultiQueries

INSERT 操作

UPDATE 操作

true

true

true

Prepare 的 SQL String 會變成 VALUES(),(),()...的格式。

Prepare 的 SQL String 是正常格式,之后通過多次EXECUTE 設置參數(shù)。

true

false

Prepare 的 SQL String 會變成 VALUES(),(),()...的格式。

Prepare 的 SQL String 是正常格式,之后通過多次EXECUTE 設置參數(shù)。

false

true

Prepare 的 SQL String是正常格式,之后通過多次 EXECUTE 來設置參數(shù)。

Prepare 的 SQL String是正常格式,之后通過多次EXECUTE 來設置參數(shù)。

false

false

Prepare 的 SQL String 是正常格式,之后通過多次EXECUTE 設置參數(shù)。

Prepare 的 SQL String 是正常格式,之后通過多次EXECUTE 設置參數(shù)。

false

true

true

拼成一個完整的 VALUES(),(),()... 格式的字符串。

拼成一個完整的 VALUES(),(),()... 格式的字符串。

true

false

拼成一個完整的 VALUES(),(),()... 格式的字符串。

執(zhí)行多條 UPDATE 語句。

false

true

執(zhí)行多條 INSERT 語句。

執(zhí)行多條 UPDATE 語句。

false

false

執(zhí)行多條 INSERT 語句。

執(zhí)行多條 UPDATE 語句。

Statement 處理方式

useServerPrepStmts

rewriteBatchedStatements

allowMultiQueries

INSERT 操作

UPDATE 操作

true

true

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

true

false

逐一執(zhí)行 SQL。

逐一執(zhí)行 SQL。

false

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

false

false

逐個執(zhí)行 INSERT

逐個執(zhí)行 UPDATE。

false

true

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

true

false

逐一執(zhí)行 SQL。

逐一執(zhí)行 SQL。

false

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

false

false

逐一執(zhí)行 INSERT。

逐一執(zhí)行 UPDATE。

MySQL 模式下的批處理

PrepareStatement 處理方式

useServerPrepStmts

rewriteBatchedStatements

allowMultiQueries

INSERT 操作

UPDATE 操作

true

true

true

SQL String 會變成 VALUES(),(),()... 的格式。

逐一 Prepare 的 SQL String 是正常格式,之后通過多次 EXECUTE 來設置參數(shù)。

true

false

SQL String 會變成 VALUES(),(),()... 的格式。

逐一 Prepare 的 SQL String 是正常格式,之后通過多次 EXECUTE 來設置參數(shù)。

false

true

Prepare 的 SQL String 是正常格式,之后通過多次 EXECUTE 來設置參數(shù)。

Prepare 的 SQL String 是正常格式,之后通過多次 EXECUTE 來設置參數(shù)。

false

false

Prepare 的 SQL String 是正常格式,之后通過多次 EXECUTE 來設置參數(shù)。

Prepare 的 SQL String 是正常格式,之后通過多次 EXECUTE 來設置參數(shù)。

false

true

true

拼成一個完整的 VALUES(),(),()... 格式的字符串。

拼成一個完整的 VALUES(),(),()... 格式的字符串。

true

false

拼成一個完整的 VALUES(),(),()... 格式的字符串。

執(zhí)行多條 UPDATE 語句。

false

true

執(zhí)行多條 INSERT 語句。

執(zhí)行多條 UPDATE 語句。

false

false

執(zhí)行多條 INSERT 語句。

執(zhí)行多條 UPDATE 語句。

Statement 處理方式

useServerPrepStmts

rewriteBatchedStatements

allowMultiQueries

INSERT 操作

UPDATE 操作

true

true

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

true

false

逐一執(zhí)行 SQL。

逐一執(zhí)行 SQL。

false

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

false

false

逐一執(zhí)行 INSERT

逐一執(zhí)行 UPDATE。

false

true

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

true

false

逐一執(zhí)行 SQL。

逐一執(zhí)行 SQL。

false

true

SQL String 會變成 VALUES(),(),()... 的格式。

SQL String 會變成 VALUES(),(),()... 的格式。

false

false

逐一執(zhí)行 INSERT。

逐一執(zhí)行 UPDATE

示例

public void test_execute_batch() {
    Connection conn = null;
    try {
        for (int q = 0; q < 2; q++) {
            for (int w = 0; w < 2; w++) {
                for (int e = 0; e < 2; e++) {


                    /**
                     *  useServerPrepStmts = true / false
                     *  rewriteBatchedStatements = true / false
                     *  allowMultiQueries = true / false
                     */
                    boolean uSPS = q == 0 ? false : true;
                    String rBS = w == 0 ? "false" : "true";
                    String aMQ = e == 0 ? "false" : "true";

                    String other_condition = "&rewriteBatchedStatements=" + rBS
                            + "&allowMultiQueries=" + aMQ;
                    conn = ConnectionUtils.getDefObOracleConnection(uSPS, true, other_condition);
                    Statement statement = conn.createStatement();

                    try {
                        statement.execute("DROP TABLE test_batch_t");
                    } catch (SQLException exp) {
                        //e.printStackTrace();
                    }

                    String sql = "create table test_batch_t(id int primary key, c1 varchar2(10))";
                    statement.execute(sql);

                    PreparedStatement ps = conn
                            .prepareStatement("insert into test_batch_t(id, c1) values (?, ?)");

                    for (int j = 0; j < 10; j++) {
                        ps.setInt(1, j);
                        ps.setString(2, j + "_test");
                        ps.addBatch();
                    }
                    ps.executeBatch();

                    ps = conn.prepareStatement("update test_batch_t set id = ? where c1 = ?");

                    for (int j = 0; j < 10; j++) {
                        ps.setInt(1, j);
                        ps.setString(2, j + "_test");
                        ps.addBatch();
                    }
                    ps.executeBatch();
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

新聞名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBase批處理
網(wǎng)頁地址:http://uogjgqi.cn/article/dheddci.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流