日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(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 選項設(shè)置為 true,則 OceanBase Connector/J 將僅使用文本協(xié)議。PrepareStatement(參數(shù)替換)在客戶端由驅(qū)動程序處理。

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

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

Oracle 模式下的批處理

PrepareStatement 處理方式

useServerPrepStmts

rewriteBatchedStatements

allowMultiQueries

INSERT 操作

UPDATE 操作

true

true

true

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

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

true

false

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

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

false

true

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

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

false

false

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

Prepare 的 SQL String 是正常格式,之后通過多次EXECUTE 設(shè)置參數(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è)置參數(shù)。

true

false

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

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

false

true

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

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

false

false

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

Prepare 的 SQL String 是正常格式,之后通過多次 EXECUTE 來設(shè)置參數(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批處理
標題來源:http://www.5511xx.com/article/dheddci.html