From 9aae3794999f3f00e27e1686d52324d7b14406c6 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 5 Oct 2021 22:39:01 +0200 Subject: [PATCH 3/3] sql: define an adapted itersize For most small objects we can use a lot of prefetching, so we set a limit of 2000, for SqlData objects (FormData and CardData) we set a limit of 100 that should be a bit better than one but not enough to overload memory with form's data. --- wcs/sql.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wcs/sql.py b/wcs/sql.py index 520f1a86..67e428ab 100644 --- a/wcs/sql.py +++ b/wcs/sql.py @@ -1417,6 +1417,7 @@ class SqlMixin: _numerical_id = True _table_select_skipped_fields = [] _iterate_on_server = True + _default_itersize = 2000 @classmethod @guard_postgres @@ -1659,7 +1660,7 @@ class SqlMixin: if cls._iterate_on_server and iterator: conn = get_connection(isolate=True) cur = conn.cursor(name='select_iterator_%s' % uuid.uuid4()) - cur.itersize = 1 + cur.itersize = cls._default_itersize else: conn, cur = get_connection_and_cursor() cur.execute(sql_statement, parameters) @@ -1866,6 +1867,7 @@ class SqlMixin: class SqlDataMixin(SqlMixin): _names = None # make sure StorableObject methods fail _formdef = None + _default_itersize = 100 _table_static_fields = [ ('id', 'serial'), -- 2.33.0