From 4c2bbbce2016e589574233214f6ec64ea2ebe4a5 Mon Sep 17 00:00:00 2001 From: Jason Robinson Date: Mon, 1 Jun 2026 12:19:05 +0300 Subject: [PATCH] Use a "many" insert for `add_profile_updates` --- synapse/storage/databases/main/profile.py | 33 ++++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/synapse/storage/databases/main/profile.py b/synapse/storage/databases/main/profile.py index df49083de4..4e9c2e4f01 100644 --- a/synapse/storage/databases/main/profile.py +++ b/synapse/storage/databases/main/profile.py @@ -477,19 +477,32 @@ class ProfileWorkerStore(SQLBaseStore): stream_ids = self._profile_updates_id_gen.get_next_mult_txn( txn, len(updated_fields) ) + values = [] + inserted_ts = self.clock.time_msec() for stream_id, field_name in zip(stream_ids, updated_fields): - self.db_pool.simple_insert_txn( - txn, - table="profile_updates", - values={ - "stream_id": stream_id, - "instance_name": self._instance_name, - "user_id": user_id_str, - "field_name": field_name, - "inserted_ts": self.clock.time_msec(), - }, + values.append( + [ + stream_id, + self._instance_name, + user_id_str, + field_name, + inserted_ts, + ] ) + self.db_pool.simple_insert_many_txn( + txn, + table="profile_updates", + keys=[ + "stream_id", + "instance_name", + "user_id", + "field_name", + "inserted_ts", + ], + values=values, + ) + return stream_ids[-1] return await self.db_pool.runInteraction(