Android sql事务性能

时间:2012-09-12 18:55:43

标签: android sql performance

我想知道是否有人可以解释为什么在事务内部的android平台上运行sql要快得多。例如一些代码,例如:

SQLiteDatabase db = dbHelperExt.getWritableDatabase();
db.beginTransaction();
try {
    ... // some sql inserting/updating/deleting
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}

在处理数百个插页时,我的速度提升速度提高了一倍,我主要想知道为什么会这样。另外,在处理php / myqsl时,我没有注意到同样的增加,这是什么交易?

1 个答案:

答案 0 :(得分:2)

每当您对SQLiteDatabase执行操作时,默认情况下会打开一个事务,该事务负责打开文件,获取db对象,执行请求并释放对文件的访问权限。 此外,您可能会注意到,第一个操作对系统来说更重。 如果您没有合并在唯一事务中同时执行的不同操作,则将为每个操作创建一个操作(即:10个操作= 10个事务,其中包含每个操作的所有工作)。

当您使用1个交易时,您只执行一次95%的较重操作。 唯一的缺点可能是,如果您的一个请求失败,其余的将被取消。但对我来说,这实际上是一个优势。

编辑: Here您有更详细的信息。