SQLiteDatabase db = dh.getWritableDatabase();
db.execSQL("PRAGMA cache_size=12000;");
db.beginTransaction();
try {
for (int i = 0; i < 10000; i++) {
String id = "8aebf7b03e410db4013e43ed2369" + String.format("%04d", i);
String sql = generateSql();
SQLiteStatement sqlListStatment = db.compileStatement(sql);
sqlListStatment.bindString(1, id);
sqlListStatment.bindString(2, "20130426091902-187");
sqlListStatment.executeInsert();
// db.execSQL(sql);
}
db.setTransactionSuccessful();
} catch (android.database.SQLException e) {
e.printStackTrace();
} finally {
db.endTransaction();
db.close();
dh.close();
}
性能优化要点,
1,使用事务
db.beginTransaction();
db.setTransactionSuccessful();
db.endTransaction();
使用事务后1万条数据需要13秒左右插入完成
2,使用SQLiteStatement ,预先编译sql再执行,通过传递参数方式来插入数据
改造成这种方式后1万条数据需要8秒左右插入完成
下面是如果用ormlite的时候的处理方法
关键是TransactionManager.callInTransaction和dao.executeRaw函数加上args
try {
TransactionManager.callInTransaction(em.getConnectionSource(), new Callable<Void>() {
@Override
public Void call() throws Exception {
try {
Dao<?, ?> dao = null;
dao = em.findDao(Task.class);
em.enableCache();
for (int i = 0; i < 10000; i++) {
String id = "8aebf7b03e410db4013e43ed2369" + String.format("%04d", i);
String sql = generateSql();
Log.d("MyTag", sql);
String[] args = new String[] { id, "20130426091902-187" };
dao.executeRaw(sql, args);
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
});
} catch (SQLException e) {
e.printStackTrace();
}
从结果来看用Ormlite还是慢了些,一个9378毫秒,一个6613毫秒,如果谁还有大批量操作sqlite数据库优化的相关内容,麻烦给我留言,谢谢
- 大小: 21.7 KB
分享到:
相关推荐
在Android开发中,SQLite是一个...实际开发中,还需要考虑数据同步、数据备份、数据加密等高级功能,以及性能优化,如批量插入、使用索引等。学习并理解这些知识点,将有助于你更好地在Android项目中运用SQLite数据库。
`SQLiteOpenHelper`的子类可以获取到`SQLiteDatabase`对象,通过这个对象可以执行SQL语句,如创建表、插入数据、查询数据、更新数据和删除数据等。 4. **SQL语句的执行**: - **CREATE TABLE**:用于创建新表,...
为了提高数据库操作性能,可以使用批量插入、预编译语句(SQLiteStatement)以及适当的数据缓存策略。同时,避免在主线程中执行耗时的数据库操作,以免影响用户体验。 综上所述,"Android基于SQLite的学生信息管理...
源码展示了如何使用SQLite的SQL语句进行数据查询、插入、更新和删除。同时,我们还能看到如何使用BEGIN、COMMIT和ROLLBACK来处理数据库事务,确保数据的一致性和完整性。 五、数据库性能优化 SqliteManager源码中...
例如,批量插入数据而不是逐条插入,可以减少数据库事务的开销;在读取大量数据时,使用CursorLoader或者LiveData可以避免阻塞主线程;定期清理不再使用的数据,以减少数据库大小;适当使用索引,提升查询速度,但要...
- 插入数据:使用`INSERT INTO`语句将新记录添加到表中。例如,`INSERT INTO students (name, age) VALUES ('张三', 20);` - 查询数据:使用`SELECT`语句获取表中的数据。例如,`SELECT * FROM students WHERE age...
6. 性能优化:SQLiteManager可能会包含一些性能优化策略,比如使用事务来提高批量插入或更新的效率,或者通过缓存来减少不必要的数据库访问。 通过对Android SqliteManager源码的深入研究,开发者不仅可以了解如何...
例如,当批量更新或插入数据时,可以开启一个事务,将一系列操作包裹在`beginTransaction()`、`setTransactionSuccessful()`和`endTransaction()`之间。 需要注意的是,描述中提到“程序如果跑不起来需要自调”,这...
SQLite是Android平台上广泛使用的轻量级关系型数据库,它允许应用程序在本地存储和管理数据,无需依赖中央服务器。SQLite优化对于提升应用性能至关重要,尤其是在处理大量数据或频繁读写操作时。以下是一些关于...
- 在这个“SQLiteTest”中,可能包含了用于测试SQLite功能的代码示例,例如创建数据库、执行查询、插入数据等操作,可以帮助开发者更好地理解和实践SQLite在Android中的应用。 通过以上知识点的学习和实践,开发者...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的...为了深入理解,你可以下载提供的"001AndroidSqlite"压缩包,里面可能包含相关的源代码示例,这将有助于你更好地掌握实践中的技巧和最佳实践。
在Android开发中,SQLite是一个重要的组成部分,它是一个轻量级的数据库系统,允许开发者在应用程序中存储、管理和处理数据。SQLite被广泛应用于Android应用,因为它具有高效、可靠且易于使用的特性。下面我们将深入...
为了提高效率,还可以考虑使用事务来处理多条SQL操作,比如批量插入或更新: ```java public void batchInsert(List<User> users) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction()...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻...在实际项目中,应根据需求设计合理的数据库结构,并合理运用SQL语句进行数据操作,同时注意性能优化,如使用事务处理批量操作,避免频繁的数据库读写。
联系人数据在Android设备上是以SQLite数据库的形式存储的。Content Provider会与SQLite数据库进行通信,执行查询、插入、更新和删除等操作。 4. **批量操作(Bulk Operations)**: 在执行批量删除时,为了提高...
SQLite是一种轻量级的、嵌入式的关系型数据库,常用于Android等移动平台的数据存储。在Android应用开发中,SQLite提供了高效、可靠的数据管理能力。本文将详细介绍SQLite的基本操作,包括数据库的创建、版本升级、...
总结,Android中的SQLite大数据处理和同时读写涉及批量写入、事务管理、并发控制等多个方面。理解并合理运用这些技巧,可以显著提升SQLite数据库的性能和并发能力,使应用运行更加流畅。开发者还可以根据具体需求,...
在Android开发中,SQLite是一个非常重要的轻量级数据库系统,尤其适用于存储应用程序的结构化数据。SQLite被集成在Android系统中,为开发者提供了一个高效、可靠且易于使用的数据存储解决方案。在这个“学生管理系统...