]> git.openstreetmap.org Git - nominatim.git/commitdiff
Disable JIT and parallel workers when indexing
authorSarah Hoffmann <lonvia@denofr.de>
Sat, 30 May 2020 09:20:16 +0000 (11:20 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 30 May 2020 09:20:16 +0000 (11:20 +0200)
Locally disable jit and parallel workers in the connection that
do indexing. The query planner tends to be overenthusiatic about
using JIT. But with the rather less complex queries we have, the
overhead tends to be larger than the performance gain.

Fixes #1677.

nominatim/nominatim.py

index 3e9c2f1644116e1efab46bd0e03c8291f9687ce6..b29bf343e035e02cdfd62a43e0e0d3a01ebebcd5 100755 (executable)
@@ -124,6 +124,15 @@ class DBConnection(object):
         self.wait()
 
         self.cursor = self.conn.cursor()
+        # Disable JIT and parallel workers as they are known to cause problems.
+        # Update pg_settings instead of using SET because it does not yield
+        # errors on older versions of Postgres where the settings are not
+        # implemented.
+        self.perform(
+            """ UPDATE pg_settings SET setting = -1 WHERE name = 'jit_above_cost';
+                UPDATE pg_settings SET setting = 0 
+                   WHERE name = 'max_parallel_workers_per_gather';""")
+        self.wait()
 
     def wait(self):
         """ Block until any pending operation is done.