哪个更快,一个事务有多个查询,还是每个查询都有一个单独的事务?
一个事务有多个查询:
db.transaction(function (tx){
tx.executeSql('INSERT INTO TEST VALUES ("Halo1" ,"Halo2")', [], win, fail);
tx.executeSql('INSERT INTO TEST VALUES ("Halo3" ,"Halo4")', [], win, fail);
tx.executeSql('INSERT INTO TEST VALUES ("Halo5" ,"Halo6")', [], win, fail);
.
.
.
.
});每个查询一个事务:
db.transaction(function(tx){
tx.executeSql('INSERT INTO TEST VALUES ("Halo1" ,"Halo2")', [], win, fail);
});
db.transaction(function(tx){
tx.executeSql('INSERT INTO TEST VALUES ("Halo3" ,"Halo4")', [], win, fail);
});
and so on.....我需要这个信息,因为我必须在一个表中插入许多记录。
发布于 2011-05-31 14:38:10
这是一种权衡。几乎可以肯定的是,在一个事务中使用许多语句会更快,因为您可以避免在事务结束之前提交这些事务的开销,但是请注意,不要猜测!
另一方面,您不希望在单个事务中放入太多内容,因为DBMS必须维护有关该事务的控制信息(回滚或前滚日志等)。
我通常会选择一个折中的立场。在一个自动提交每个N插入的函数中执行插入。类似于伪代码:
counter = 50
start new transaction # always start a transaction
for each insert_cmd in insert_list:
call do_it (insert_cmd)
commit current transaction # and always end it
def do_it (insert_cmd):
if counter < 1:
commit current transaction
start new transaction
counter = 50
execute insert_cmd
counter = counter - 1只需确保您没有绕过创建事务的全部原因。它们是ACID属性中的A (原子性)。如果需要将插入作为单个事务来完成以正确地维护数据,那么可以这样做。
发布于 2011-05-31 14:38:44
具有多个插入的一个事务总是更快--快得多!也就是说,如果某些东西失败了,您将丢失所有以前的插入...
发布于 2011-05-31 14:40:21
确定部分源代码速度的最快方法是围绕特定部分进行大约5.000次迭代(可能更多,取决于代码执行的速度),并测量循环开始前的时间戳和之后的时间戳之间的时间差。适用于支持任何时间测量的每种语言。希望这能有所帮助。
https://stackoverflow.com/questions/6183810
复制相似问题