zoukankan      html  css  js  c++  java
  • ormlite 批处理操作

    提高ormlite的批处理速度

    http://stackoverflow.com/quegoogstions/11761472/ormlites-createorupdate-seems-slow-what-is-normal-speed

    This may be the "expected" speed unfortunately. Make sure you are using ORMLite version 4.39 or higher. createOrUpdate(...) was using a more expensive method to test for existing of the object in the database beforehand. But I suspect this is going to be a minimal speed improvement.

    If I create 100 new rows then the speed is even slower.

    By default Sqlite is in auto-commit mode. One thing to try is to wrap your inserts (or your createOrUpdates) using the the ORMLite Dao.callBatchTasks(...) method.

    In by BulkInsertsTest android unit test, the following doInserts(...) method inserts 1000 items. When I just call it:

    doInserts(dao);

    It takes 7.3 seconds in my emulator. If I call using the callBatchTasks(...) method which wraps a transactions around the call in Android Sqlite:

    dao.callBatchTasks(new Callable<Void>() {
        public Void call() throws Exception {
            doInserts(dao);
            return null;
        }
    });

    It takes 1.6 seconds. The same performance can be had by using the dao.setSavePoint(...)method. This starts a transaction but is not as good as the callBachTasks(...) method because you have to make sure you close your own transaction:

    DatabaseConnection conn = dao.startThreadConnection();
    Savepoint savePoint = null;
    try {
        savePoint = conn.setSavePoint(null);
        doInserts(dao);
    } finally {
        // commit at the end
        conn.commit(savePoint);
        dao.endThreadConnection(conn);
    }

    This also takes ~1.7 seconds.

     dao.setsavePoint开始一个事务,但不如callBachTasks(...)方法,因为你必须确保你闭上你自己的事务:

  • 相关阅读:
    Oracle-函数
    Oracle-存储过程
    Linux-文件系统概述
    Oralce-PL/SQL编程-游标
    Oracle -操作数据库
    Oralce常用系统函数
    SQL语言基础-基本概念
    Linux-进程管理
    Linux-用户管理
    shell里的IFS内置环境变量
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/4150727.html
Copyright © 2011-2022 走看看