diff --git a/synapse/storage/room.py b/synapse/storage/room.py
index d91c853070..9f373b47e0 100644
--- a/synapse/storage/room.py
+++ b/synapse/storage/room.py
@@ -310,6 +310,7 @@ class RoomStore(SQLBaseStore):
def _store_event_search_txn(self, txn, event, key, value):
if isinstance(self.database_engine, PostgresEngine):
+ txn.execute("SET work_mem='256kB'")
sql = (
"INSERT INTO event_search"
" (event_id, room_id, key, vector, stream_ordering, origin_server_ts)"
@@ -323,6 +324,7 @@ class RoomStore(SQLBaseStore):
event.origin_server_ts,
)
)
+ txn.execute("RESET work_mem")
elif isinstance(self.database_engine, Sqlite3Engine):
sql = (
"INSERT INTO event_search (event_id, room_id, key, value)"
diff --git a/synapse/storage/search.py b/synapse/storage/search.py
index 479b04c636..f52f3c8592 100644
--- a/synapse/storage/search.py
+++ b/synapse/storage/search.py
@@ -106,6 +106,7 @@ class SearchStore(BackgroundUpdateStore):
event_search_rows.append((event_id, room_id, key, value))
if isinstance(self.database_engine, PostgresEngine):
+ txn.execute("SET work_mem='256kB'")
sql = (
"INSERT INTO event_search (event_id, room_id, key, vector)"
" VALUES (?,?,?,to_tsvector('english', ?))"
@@ -123,6 +124,9 @@ class SearchStore(BackgroundUpdateStore):
clump = event_search_rows[index:index + INSERT_CLUMP_SIZE]
txn.executemany(sql, clump)
+ if isinstance(self.database_engine, PostgresEngine):
+ txn.execute("RESET work_mem")
+
progress = {
"target_min_stream_id_inclusive": target_min_stream_id,
"max_stream_id_exclusive": min_stream_id,
|