From 1cd14daadb40f5d76e559d874e106e9b63612689 Mon Sep 17 00:00:00 2001 From: paul luse Date: Fri, 25 Jul 2014 16:34:39 -0700 Subject: [PATCH] Reuse a cursor instead of a conn.execute for better performance Basically the same thing as https://review.openstack.org/#/c/109694/ but over in the account backend. Change-Id: I9255f3145818da3adafc16d3bcf159608a78fe51 --- swift/account/backend.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/swift/account/backend.py b/swift/account/backend.py index 595c4969ec..e19a5e8bbf 100644 --- a/swift/account/backend.py +++ b/swift/account/backend.py @@ -453,6 +453,7 @@ class AccountBroker(DatabaseBroker): """ def _really_merge_items(conn): max_rowid = -1 + curs = conn.cursor() for rec in item_list: record = [rec['name'], rec['put_timestamp'], rec['delete_timestamp'], rec['object_count'], @@ -466,9 +467,9 @@ class AccountBroker(DatabaseBroker): ''' if self.get_db_version(conn) >= 1: query += ' AND deleted IN (0, 1)' - curs = conn.execute(query, (rec['name'],)) - curs.row_factory = None - row = curs.fetchone() + curs_row = curs.execute(query, (rec['name'],)) + curs_row.row_factory = None + row = curs_row.fetchone() if row: row = list(row) for i in xrange(5): @@ -484,11 +485,11 @@ class AccountBroker(DatabaseBroker): record[5] = 1 else: record[5] = 0 - conn.execute(''' + curs.execute(''' DELETE FROM container WHERE name = ? AND deleted IN (0, 1) ''', (record[0],)) - conn.execute(''' + curs.execute(''' INSERT INTO container (name, put_timestamp, delete_timestamp, object_count, bytes_used, deleted, storage_policy_index) @@ -498,12 +499,12 @@ class AccountBroker(DatabaseBroker): max_rowid = max(max_rowid, rec['ROWID']) if source: try: - conn.execute(''' + curs.execute(''' INSERT INTO incoming_sync (sync_point, remote_id) VALUES (?, ?) ''', (max_rowid, source)) except sqlite3.IntegrityError: - conn.execute(''' + curs.execute(''' UPDATE incoming_sync SET sync_point=max(?, sync_point) WHERE remote_id=?