Android sql事务性能



我想知道是否有人能解释为什么在交易中在android平台上运行sql要快得多。例如一些代码,如:

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

对我来说,在处理数百个插件时,速度的增长速度快了数倍,我主要想知道为什么会这样。此外,在处理php/myqsl时,我没有注意到同样的增长,这是怎么回事?

无论何时对SQLiteDatabase执行操作,默认情况下都会打开一个事务,负责打开文件、获取db对象、执行请求和释放对文件的访问。此外,正如你可能注意到的,第一个动作对系统来说是越重的。如果您不在一个唯一的事务中合并同时执行的不同操作,则会为每个操作创建一个操作(即:10个操作=10个事务,每个事务的所有工作)。

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

编辑:这里有更多详细信息。

最新更新