Mercurial > dedupe
changeset 109:6cf5eb5b0be1
Embed batch operations in BEGIN-END TRANSACTION for speed improvement.
| author | Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no> |
|---|---|
| date | Tue, 18 Feb 2014 19:41:23 +0100 |
| parents | e9b798e80bad |
| children | bae09ef524cb |
| files | SqliteDBLink.cpp |
| diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/SqliteDBLink.cpp Tue Feb 18 17:08:06 2014 +0100 +++ b/SqliteDBLink.cpp Tue Feb 18 19:41:23 2014 +0100 @@ -49,10 +49,10 @@ preparedBeginQuery = new QSqlQuery(db); - preparedBeginQuery->prepare("BEGIN"); + preparedBeginQuery->prepare("BEGIN TRANSACTION"); preparedEndQuery = new QSqlQuery(db); - preparedEndQuery->prepare("END"); + preparedEndQuery->prepare("END TRANSACTION"); preparedSizePrefixQuery = new QSqlQuery(db); preparedSizePrefixQuery->prepare("SELECT * FROM files WHERE path LIKE :prefix AND size = :size"); @@ -376,7 +376,11 @@ while (operation) { if (operation->type() != last) { + if (!preparedBeginQuery->exec()) + throw SQLException(*preparedBeginQuery); executeOperation(paths, sizes, mtimes, hashes, last); + if (!preparedEndQuery->exec()) + throw SQLException(*preparedEndQuery); } switch (operation->type()) { @@ -406,7 +410,11 @@ foreach(QVariant path, paths) { qDebug() << path.toString(); } + if (!preparedBeginQuery->exec()) + throw SQLException(*preparedBeginQuery); executeOperation(paths, sizes, mtimes, hashes, last); + if (!preparedEndQuery->exec()) + throw SQLException(*preparedEndQuery); qDebug() << "Execute Operation Done"; }
