avoid 80s GIN inserts by tweaking work_mem

see https://github.com/matrix-org/synapse/issues/2753 for details
This commit is contained in:
Matthew Hodgson 2018-01-09 16:25:04 +00:00
parent 3f9f1c50f3
commit 19f9227643
1 changed files with 4 additions and 0 deletions

View File

@ -106,6 +106,7 @@ class SearchStore(BackgroundUpdateStore):
event_search_rows.append((event_id, room_id, key, value)) event_search_rows.append((event_id, room_id, key, value))
if isinstance(self.database_engine, PostgresEngine): if isinstance(self.database_engine, PostgresEngine):
txn.execute("SET work_mem='256KB'")
sql = ( sql = (
"INSERT INTO event_search (event_id, room_id, key, vector)" "INSERT INTO event_search (event_id, room_id, key, vector)"
" VALUES (?,?,?,to_tsvector('english', ?))" " VALUES (?,?,?,to_tsvector('english', ?))"
@ -123,6 +124,9 @@ class SearchStore(BackgroundUpdateStore):
clump = event_search_rows[index:index + INSERT_CLUMP_SIZE] clump = event_search_rows[index:index + INSERT_CLUMP_SIZE]
txn.executemany(sql, clump) txn.executemany(sql, clump)
if isinstance(self.database_engine, PostgresEngine):
txn.execute("RESET work_mem")
progress = { progress = {
"target_min_stream_id_inclusive": target_min_stream_id, "target_min_stream_id_inclusive": target_min_stream_id,
"max_stream_id_exclusive": min_stream_id, "max_stream_id_exclusive": min_stream_id,