mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-10-31 04:08:21 +00:00 
			
		
		
		
	As an optimisation, use TRUNCATE on Postgres when clearing the user directory tables. (#15316)
				
					
				
			This commit is contained in:
		
							parent
							
								
									5b70f240cf
								
							
						
					
					
						commit
						5f7c908280
					
				
							
								
								
									
										1
									
								
								changelog.d/15316.misc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								changelog.d/15316.misc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| As an optimisation, use `TRUNCATE` on Postgres when clearing the user directory tables. | ||||
| @ -698,10 +698,17 @@ class UserDirectoryBackgroundUpdateStore(StateDeltasStore): | ||||
|         """Delete the entire user directory""" | ||||
| 
 | ||||
|         def _delete_all_from_user_dir_txn(txn: LoggingTransaction) -> None: | ||||
|             txn.execute("DELETE FROM user_directory") | ||||
|             txn.execute("DELETE FROM user_directory_search") | ||||
|             txn.execute("DELETE FROM users_in_public_rooms") | ||||
|             txn.execute("DELETE FROM users_who_share_private_rooms") | ||||
|             # SQLite doesn't support TRUNCATE. | ||||
|             # On Postgres, DELETE FROM does a table scan but TRUNCATE is more efficient. | ||||
|             truncate = ( | ||||
|                 "DELETE FROM" | ||||
|                 if isinstance(self.database_engine, Sqlite3Engine) | ||||
|                 else "TRUNCATE" | ||||
|             ) | ||||
|             txn.execute(f"{truncate} user_directory") | ||||
|             txn.execute(f"{truncate} user_directory_search") | ||||
|             txn.execute(f"{truncate} users_in_public_rooms") | ||||
|             txn.execute(f"{truncate} users_who_share_private_rooms") | ||||
|             txn.call_after(self.get_user_in_directory.invalidate_all) | ||||
| 
 | ||||
|         await self.db_pool.runInteraction( | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user