]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 3 Jun 2020 09:35:12 +0000 (11:35 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 3 Jun 2020 09:35:12 +0000 (11:35 +0200)
docs/admin/Installation.md
nominatim/nominatim.py
sql/functions/placex_triggers.sql
sql/indices.src.sql
sql/indices_search.src.sql

index f3f54794c0a98746c6925721884f17bbe5637d2d..cf994c4c7a6b8fe7c4cc27d59d30fb55d09b4d88 100644 (file)
@@ -36,8 +36,8 @@ For compiling:
 
 For running Nominatim:
 
-  * [PostgreSQL](https://www.postgresql.org) (9.3 - 11)
-  * [PostGIS](https://postgis.org) (2.2 - 2.5)
+  * [PostgreSQL](https://www.postgresql.org) (9.3+)
+  * [PostGIS](https://postgis.org) (2.2+)
   * [Python 3](https://www.python.org/)
   * [Psycopg2](https://initd.org/psycopg)
   * [PHP](https://php.net) (7.0 or later)
@@ -45,10 +45,6 @@ For running Nominatim:
   * PHP-intl (bundled with PHP)
   * a webserver (apache or nginx are recommended)
 
-!!! danger "Important"
-    Postgresql 12+ and Postgis 3.0+ are known to cause performance issues. They are
-    not recommended for a production installation at the moment.
-
 For running continuous updates:
 
   * [pyosmium](https://osmcode.org/pyosmium/) (with Python 3)
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.
index b84a2d6d7879eb57959f8ce73ae61de4709c9fb8..8d5378550b47085dbd6441e9144cd7022da41fe7 100644 (file)
@@ -99,12 +99,12 @@ BEGIN
         --DEBUG: RAISE WARNING 'Checked for nearest way (%)', parent_place_id;
       ELSE
         -- for larger features simply find the area with the largest rank that
-        -- contains the bbox
+        -- contains the bbox, only use addressable features
         FOR location IN
           SELECT place_id FROM placex
             WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
-                  AND rank_search between 5 and 25
-            ORDER BY rank_search desc
+                  AND rank_address between 5 and 25
+            ORDER BY rank_address desc
         LOOP
             RETURN location.place_id;
         END LOOP;
index 63d4677e13a27782ca41b5afd7358b9759240478..fa009783f1f7f4e94b432888ec2ed96fbe6fad7b 100644 (file)
@@ -1,26 +1,26 @@
 -- Indices used only during search and update.
 -- These indices are created only after the indexing process is done.
 
-CREATE INDEX CONCURRENTLY idx_word_word_id on word USING BTREE (word_id) {ts:search-index};
+CREATE INDEX idx_word_word_id on word USING BTREE (word_id) {ts:search-index};
 
-CREATE INDEX CONCURRENTLY idx_place_addressline_address_place_id on place_addressline USING BTREE (address_place_id) {ts:search-index};
+CREATE INDEX idx_place_addressline_address_place_id on place_addressline USING BTREE (address_place_id) {ts:search-index};
 
-DROP INDEX CONCURRENTLY IF EXISTS idx_placex_rank_search;
-CREATE INDEX CONCURRENTLY idx_placex_rank_search ON placex USING BTREE (rank_search) {ts:search-index};
-CREATE INDEX CONCURRENTLY idx_placex_rank_address ON placex USING BTREE (rank_address) {ts:search-index};
-CREATE INDEX CONCURRENTLY idx_placex_parent_place_id ON placex USING BTREE (parent_place_id) {ts:search-index} where parent_place_id IS NOT NULL;
+DROP INDEX IF EXISTS idx_placex_rank_search;
+CREATE INDEX idx_placex_rank_search ON placex USING BTREE (rank_search) {ts:search-index};
+CREATE INDEX idx_placex_rank_address ON placex USING BTREE (rank_address) {ts:search-index};
+CREATE INDEX idx_placex_parent_place_id ON placex USING BTREE (parent_place_id) {ts:search-index} where parent_place_id IS NOT NULL;
 
-CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_lookupPoint
+CREATE INDEX idx_placex_geometry_reverse_lookupPoint
   ON placex USING gist (geometry) {ts:search-index}
   WHERE (name is not null or housenumber is not null or rank_address between 26 and 27)
     AND class not in ('railway','tunnel','bridge','man_made')
     AND rank_address >= 26 AND indexed_status = 0 AND linked_place_id is null;
-CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_lookupPolygon
+CREATE INDEX idx_placex_geometry_reverse_lookupPolygon
   ON placex USING gist (geometry) {ts:search-index}
   WHERE St_GeometryType(geometry) in ('ST_Polygon', 'ST_MultiPolygon')
     AND rank_address between 4 and 25 AND type != 'postcode'
     AND name is not null AND indexed_status = 0 AND linked_place_id is null;
-CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_placeNode
+CREATE INDEX idx_placex_geometry_reverse_placeNode
   ON placex USING gist (geometry) {ts:search-index}
   WHERE osm_type = 'N' AND rank_search between 5 and 25
     AND class = 'place' AND type != 'postcode'
@@ -28,8 +28,8 @@ CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_placeNode
 
 GRANT SELECT ON table country_osm_grid to "{www-user}";
 
-CREATE INDEX CONCURRENTLY idx_osmline_parent_place_id ON location_property_osmline USING BTREE (parent_place_id) {ts:search-index};
-CREATE INDEX CONCURRENTLY idx_osmline_parent_osm_id ON location_property_osmline USING BTREE (osm_id) {ts:search-index};
+CREATE INDEX idx_osmline_parent_place_id ON location_property_osmline USING BTREE (parent_place_id) {ts:search-index};
+CREATE INDEX idx_osmline_parent_osm_id ON location_property_osmline USING BTREE (osm_id) {ts:search-index};
 
-CREATE UNIQUE INDEX CONCURRENTLY idx_postcode_id ON location_postcode USING BTREE (place_id) {ts:search-index};
-CREATE INDEX CONCURRENTLY idx_postcode_postcode ON location_postcode USING BTREE (postcode) {ts:search-index};
+CREATE UNIQUE INDEX idx_postcode_id ON location_postcode USING BTREE (place_id) {ts:search-index};
+CREATE INDEX idx_postcode_postcode ON location_postcode USING BTREE (postcode) {ts:search-index};
index 70cd8799e2425c8b1be8cf96e7db08511f2ee6e7..d1363fc6e1ea7e55c55a1049532201c69b7939f2 100644 (file)
@@ -1,6 +1,6 @@
 -- Indices used for /search API.
 -- These indices are created only after the indexing process is done.
 
-CREATE INDEX CONCURRENTLY idx_search_name_nameaddress_vector ON search_name USING GIN (nameaddress_vector) WITH (fastupdate = off) {ts:search-index};
-CREATE INDEX CONCURRENTLY idx_search_name_name_vector ON search_name USING GIN (name_vector) WITH (fastupdate = off) {ts:search-index};
-CREATE INDEX CONCURRENTLY idx_search_name_centroid ON search_name USING GIST (centroid) {ts:search-index};
+CREATE INDEX idx_search_name_nameaddress_vector ON search_name USING GIN (nameaddress_vector) WITH (fastupdate = off) {ts:search-index};
+CREATE INDEX idx_search_name_name_vector ON search_name USING GIN (name_vector) WITH (fastupdate = off) {ts:search-index};
+CREATE INDEX idx_search_name_centroid ON search_name USING GIST (centroid) {ts:search-index};