sosm / osmhistorydb-ch

ISC License
3 stars 2 forks source link

created datum nutzen zum beschleunigen des clippers #7

Closed datendelphin closed 3 years ago

datendelphin commented 3 years ago

Index auf den created spalten erstellen:

CREATE INDEX ON nodes (created);
CREATE INDEX ON ways (created);
CREATE INDEX ON relations (created);

ältestes Datum in den aktuellen changes finden: osmium fileinfo changes.osc.gz -e

File:
  Name: changes.osc.gz
  Format: XML
  Compression: gzip
  Size: 6368060
Header:
  Bounding boxes:
  With history: yes
  Options:
    generator=libosmium/2.15.4
    version=0.6
[======================================================================] 100% 
Data:
  Bounding box: (-123.0079443,-42.5166672,172.3858021,65.4833472)
  Timestamps:
    First: 2021-03-24T09:42:29Z
    Last: 2021-03-24T10:32:05Z
  Objects ordered (by type and id): yes
  Multiple versions of same object: yes
  CRC32: not calculated (use --crc/-c to enable)
  Number of changesets: 0
  Number of nodes: 233617
  Number of ways: 34229
  Number of relations: 410
  Smallest changeset ID: 0
  Smallest node ID: 215054
  Smallest way ID: 111
  Smallest relation ID: 34685
  Largest changeset ID: 0
  Largest node ID: 8556691628
  Largest way ID: 921654210
  Largest relation ID: 12485505
  All objects have following metadata attributes: all
  Some objects have following metadata attributes: all
  Number of buffers: 28 (avg 9580 objects per buffer)
  Sum of buffer sizes: 28316048 (0.028 GB)
  Sum of buffer capacities: 29360128 (0.029 GB, 96% full)

First ist der timestamp, der wichtig ist.

Dann die queries anpassen mit einer Zusatzbedingung WHERE created >= timestamp '2021-03-24T09:42:29Z'

wäre das was? Scheint bei einem kleinen test guten speedup zu bringen

Für die changesets könnte es etwas schwieriger sein, da wir dort kein so tolles osmium fileinfo haben. Aber: man könnte den letzten created?at timestamp der osm_changeset tabelle abfragen vor dem updaten, zur Sicherheit noch etwa 3 Stunden abziehen, und dann auch so eine Zusatzbedingung nutzen um die queries effizienter zu machen