Read Locks? Z.B. Drop Constraint (FK) geht nciht...

Moment, was war denn nun pampig? Das “spröde”?

Aber Du musst doch zugeben, das die Lösung bei PostgreSQL über die Btrees bei geringer Kardinalität irgendwie… “irgendwie halt nicht pampig” ist?

Ich habe euch ja auch nicht die Schuld gegeben… außerdem hast Du mir empfohlen ein “Schweizer Taschenmesser” zu nehmen - das könnte man auch als pampig ansehen… wenns nach mir ginge hätte ich gerne einen Bulldozer genommen nur ohne Ressourcen (Mapower und Geld) stehe ich nun in der Pampe und hoffe das IHR mich irgendwie in die richtige Richtung schubst ohne mit dem Kopf schaden (“peeling”) zu nehmen…

Also Frieden?

Frieden schon - mit uns. Geh zu deinem Chef und sag ihm, das du Probleme hast und so nicht weiter kommst.

Wenn ich mir den gesamten Thread so anschaue löst du fein säuberlich ein kleines Problem nach dem anderen - und brauchst pro Schritt richtig viel Zeit. Normalerweise ist das längst ein Punkt, an dem man sich externe Hilfe ins Boot holt - schon um die Sache zu beschleunigen und auch all die Punkte gleich mit zu erledigen die man bisher noch gar nicht gesehen hat. Ich weiß nicht, wie wichtig dieses Projekt bei euch ist, aber für solche Sachen gibt es mehrere Firmen die dabei Support leisten.

man man … ads … du mimose :slight_smile:

@antonym … der ads (und ich) möchten dich zunaechst darauf hinweisen, bitte mal bei einem problem zu bleiben - und nicht schon ein naechstes reinzufriemeln - das garnichts damit zu tun hat …

deine locks sind problem 1 … indizes dein poblem 2

ursache des problem 1 wurde bereits erläutert …

problem 2 ist ein reines modell-problem … index ist erstmal index - hier solltest du auch lernen zu unterscheiden, was du fuer indexe modellierst - und was pg zur laufzeit macht …

wenn man naemlcih das schweizer taschenmessre zückt - sieht man dinge, die pg index nennt - aber scheinbar erstmal nicht mehr viel mit dem zu tun haben was man modelliert hat … nur scheinbar …

um das nachvollziehen zu koennen solltest du dir eben mal das analyse werkzeug anschauen - was ads dir nahegelegt hat … so als “schupser” in die/eine “richtige richtung”

@ads: Habe ich alles schon gemacht. Geld gibt’s nicht, aber dafür habe ich schonmal erreicht, dass ich (erstmal) keine MS SQL Server mehr warten muss und die PostgreSQL am Leben gehalten werden soll. Durch die “Nichtbefüllung” der SQL Server laufen auch weniger Prozesse, weniger Speicherplatzverbrauch, mehr I/O übrig… stetig Tropfen höhlt den Stein… Dein Hinweis mit den “distinct on” hat mir übrigens deutlich weiter geholfen - ein Sort weniger, der Schritt ist jetzt fast doppelt so schnell… kannte ich wirklich nicht, ist ja auch kein SQL Standard… das group_last ist “irgendeine” user defined function… ich gehe dann zum nächsten Punkt über…

@symbiont: Richtig, der nächste Punkt ist dann ein neues Problem und bedarf eines weiteren Threads…

Zusammenfassung: Mit dem schimpfen auf “irgendwelche” Read Lock lag ich falsch (hättet Ihr mir auch am Anfang sagen können wegduck). DDLs müssen das machen, die hier vorliegende DB ist aber so aufgeteilt, das meine Prozesse sich nicht an den Locks aufhängen sondern an der I/O Auslastung.

Was habe ich gemacht?

Ich sehe zwar in der pg_locks diverse locks

select count(*) from pg_locks;
 count
-------
  2748

Aber über die pg_stat_activity

select * from pg_stat_activity where waiting = 't';
 datid | datname | procpid | usesysid | usename | current_query | waiting | xact_start | query_start | backend_start | client_addr | client_port
-------+---------+---------+----------+---------+---------------+---------+------------+-------------+---------------+-------------+-------------
(0 rows)

sehe ich das sich keiner behindert… richtig?

Das Thema Indizierung priorisiere ich weiter nach unten, ich gehe jetzt mal das I/O Thema an (aus diversen anderen Gründen - natürlich hat eine perfekte Indizierung auch Einfluss auf die I/O). Zu beiden gibt es dann bei Bedarf weitere Threads…

Man dankt…

anton

Wenn ich mich recht erinnere, kam der Hinweis auf distinct on wohl nicht von ads. Egal. Dein group_last, also “irgendeine” user defined function, macht möglicherweise Deine Performance kapott, Aber: “ich gehe dann zum nächsten Punkt über…”. Okay, auch egal. Tschüß.

Andreas

ahhhh… ich bitte um Entschuldigung - ihr heißt ja beide Andreas mit Vornamen da bin ich durch einander gekommen…

Das group_last ist - zumindest aus dem aufwendigen Statement, was erstmal die meissten Probleme gemacht hat - raus…

Hochachtungsvoll…

a.