source: trunk/import/norgis_alkis_pp/postprocessing.d/9_optimize.sql @ 412

Revision 412, 2.9 KB checked in by frank.jaeger, 5 years ago (diff)

Anpassung der ALKIS-Auskunft (PHP) an die Full-Schema-Version des ALKIS-Importers 3.0

Line 
1-- OSGeo4W64\apps\alkis-import-dev\postprocessing.d\9_optimize.sql
2-- Optimieren von ALKIS-Datenbanken aus PostNAS.
3-- Optionaler Schritt nach dem Laden oder Aktualisieren.
4-- Ziel ist die Reduzierung des Speicherplatzes und die Verbesserung der Verarbeitungs-Geschwindigkeit.
5
6-- 2018-10-29 krz Mi-Ra/Li: Idee "Clustering" aus der PostNAS-Sitzung.
7
8  SELECT 'Optimierung der Datenbank lÀuft ...' AS info;
9
10-- Anzeige der Größe der Datenbank vor der Optimierung.
11-- https://www.postgresql.org/docs/current/static/functions-admin.html
12  SELECT pg_database_size(:'DBNAME') AS db_groesse_vorher;
13
14
15-- Wenn keine historischen Objekte verwendet werden sollen, dann können alle Objekte gelöscht werden,
16--  die einen Eintrag in der Spalte "endet" haben (endet IS NULL).
17-- Sollte auskommentiert werden, wenn im NBA-Verfahren bewusst die Abgabeart "3100 fallbezogen (mit Historie)" verwendet wird
18--  und die historischen Objekte von der Anwendung gefiltert angezeigt werden können.
19  SELECT alkis_delete_all_endet();
20
21
22-- Der Konverter ogr2ogr/NAS liest in einem zweiten Durchlauf durch die NAS-Datei die
23--  DatensÀtze mit den Operationen DELETE, REPLACE und UPDATE.
24-- Diese SÀtze werden in die Tabelle "delete" eingefÌgt, wo sie Ìber einen Datenbank-Trigger die FortfÌhrung der Objekt-Tabellen auslösen.
25-- Danach können die SÀtze der delete-Tabelle wieder gelöscht werden.
26  TRUNCATE delete;
27
28
29-- Die Tabelle "alkis_beziehungen" hat in einer frÃŒhen Version des Konverters die Beziehungen zwischen ALKIS-Objekten abgebildet.
30-- Sie wurde ersetzt durch direkte Relationn zwischen den Objekt-Tabellen.
31-- Die Tabelle "alkis_beziehungen" sollte von auswertenden Programmen nicht mehr verwendet werden.
32-- Falls sie vom Konverter (Importer) noch gefÌllt wird, kann der Inhalt gelöscht werden.
33-- Der Befehl TRUNCATE ist schneller, kann aber nur vom EigentÃŒmer verwendet werden. Ggf. ersetzen durch "DELETE".
34  TRUNCATE alkis_beziehungen;
35--DELETE FROM alkis_beziehungen;
36
37
38-- Wie lange soll das Protokoll gespeichert bleiben?
39-- Selektiv "alte" EintrÀge entfernen.
40--  ts timestamp without time zone DEFAULT now(),
41  SELECT 'Importlog vom ' || date(min(ts)) || ' bis ' || date(max(ts)) AS vorher FROM alkis_importlog;
42  DELETE FROM alkis_importlog WHERE (current_timestamp - ts) > interval '62 days';  -- ca. 2 Monate
43  SELECT 'Importlog vom ' || date(min(ts)) || ' bis ' || date(max(ts)) AS nachher FROM alkis_importlog;
44
45
46-- C l u s t e r n  einiger Tabellen wie im Schritt postcreate.d definiert.
47-- --------------------------------------------------------------------------
48-- https://www.postgresql.org/docs/9.4/static/sql-cluster.html
49-- CLUSTER [VERBOSE] table_name [ USING index_name ]
50
51  CLUSTER ;
52
53
54-- Reorganisation des Speichers.
55-- Dauert je nach DB-Größe einen Weile. Die Datenbank is wÀhrend dieser Zeit nur eingeschrÀnkt benutzbar.
56  VACUUM full;
57
58
59-- Größe der Datenbank nach der Optimierung anzeigen.
60  SELECT pg_database_size(:'DBNAME') AS db_groesse_nachher;
61
62-- ENDE --
Note: See TracBrowser for help on using the repository browser.