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

Revision 409, 3.1 KB checked in by frank.jaeger, 5 years ago (diff)
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-- ++ Formatierung in besser lesbarem Zahlenformat mit . nach je 3 Stellen.
13  SELECT pg_database_size(:'DBNAME') AS db_groesse_vorher;
14
15
16-- Wenn keine historischen Objekte verwendet werden sollen, dann können alle Objekte gelöscht werden,
17--  die einen Eintrag in der Spalte "endet" haben (endet IS NULL).
18-- Sollte auskommentiert werden, wenn im NBA-Verfahren bewusst die Abgabeart "3100 fallbezogen (mit Historie)" verwendet wird
19--  und die historischen Objekte von der Anwendung gefiltert angezeigt werden können.
20  SELECT alkis_delete_all_endet();
21
22
23-- Der Konverter ogr2ogr/NAS liest in einem zweiten Durchlauf durch die NAS-Datei die
24--  DatensÀtze mit den Operationen DELETE, REPLACE und UPDATE.
25-- Diese SÀtze werden in die Tabelle "delete" eingefÌgt, wo sie Ìber einen Datenbank-Trigger die FortfÌhrung der Obejkt-Tabellen auslösen.
26-- Danach können die SÀtze der delete-Tabelle wieder gelöscht werden.
27  TRUNCATE delete;
28
29
30-- Die Tabelle "alkis_beziehungen" hat in einer frÃŒhen Version des Konverters die Beziehungen zwischen ALKIS-Objekten abgebildet.
31-- Sie wurde ersetzt durch direkte Relationn zwischen den Objekt-Tabellen.
32-- Die Tabelle "alkis_beziehungen" sollte von auswertenden Programmen nicht mehr verwendet werden.
33-- Falls sie vom Konverter (Importer) noch gefÌllt wird, kann der Inhalt gelöscht werden.
34-- Der Befehl TRUNCATE ist schneller, kann aber nur vom EigentÃŒmer verwendet werden. Ggf. ersetzen durch "DELETE".
35  TRUNCATE alkis_beziehungen;
36--DELETE FROM alkis_beziehungen;
37
38
39-- Wie lange soll das Protokoll gespeichert bleiben?
40-- Ggf. seletiv nur "alte" EintrÀge entfernen: WHERE ... ? 
41--TRUNCATE alkis_importlog;
42--  ts timestamp without time zone DEFAULT now(),
43  SELECT 'Importlog vom ' || date(min(ts)) || ' bis ' || date(max(ts)) AS vorher FROM alkis_importlog;
44  DELETE FROM alkis_importlog WHERE (current_timestamp - ts) > interval '62 days';  -- ca. 2 Monate
45  SELECT 'Importlog vom ' || date(min(ts)) || ' bis ' || date(max(ts)) AS nachher FROM alkis_importlog;
46
47
48-- C l u s t e r n  einiger Tabellen wie im Schritt postcreate definiert.
49-- --------------------------------------------------------------------------
50-- https://www.postgresql.org/docs/9.4/static/sql-cluster.html
51-- CLUSTER [VERBOSE] table_name [ USING index_name ]
52
53  CLUSTER ;
54
55
56-- Reorganisation des Speichers.
57-- Dauert je nach DB-Größe einen Weile. Die Datenbank is wÀhrend dieser Zeit nur eingeschrÀnkt benutzbar.
58  VACUUM full;
59
60
61-- Größe der Datenbank nach der Optimierung anzeigen.
62  SELECT pg_database_size(:'DBNAME') AS db_groesse_nachher;
63
64-- ENDE --
Note: See TracBrowser for help on using the repository browser.