Re: Frage zu "Limit" und "Offset"

Lists: pgsql-de-allgemein
From: marc(at)champagnierle(dot)de
To: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Frage zu "Limit" und "Offset"
Date: 2019-10-28 14:56:47
Message-ID: 1952738389.22254.1572274607184@email.ionos.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hi,

ich arbeite mit einer Tomcat-Applikation, die als Backend einen Postgres 9.6 Server hat.
Da die Applikation zum Teil recht viele Daten anfordert, kann man die angefragten Daten mittels "Limit" und "Offset" stückeln (wir reden da von 100.000-er Blöcken).

Ich habe gerade ein Anfrage geschickt, die nach 17 Sekunden 4.900 Treffer brachte, mit angehängtem "OFFSET 0 LIMIT 100000" hatte ich nach 2 Minuten noch kein Ergebnis...

Habt Ihr mir einen Tipp, wonach ich auf dem Server suchen / was ich umstellen sollte?

Gruß und Danke vorneweg

Marc

==

Marc Neininger, Singen/Htwl.


From: Harald Armin Massa <harald(dot)armin(dot)massa(at)2ndquadrant(dot)com>
To: marc(at)champagnierle(dot)de
Cc: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Frage zu "Limit" und "Offset"
Date: 2019-10-28 15:10:02
Message-ID: CAKp7heJ_bp-X9t-vGzdiGppapJvmCqsMPcFQ2YE+YuGB+WDP-A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

marc,

Markus Winand hat das ausführlich erklärt:

https://use-the-index-luke.com/de/sql/partielle-ergebnisse/blaettern

Gruß

Harald

On Mon, Oct 28, 2019 at 3:56 PM <marc(at)champagnierle(dot)de> wrote:

> Hi,
>
> ich arbeite mit einer Tomcat-Applikation, die als Backend einen Postgres
> 9.6 Server hat.
> Da die Applikation zum Teil recht viele Daten anfordert, kann man die
> angefragten Daten mittels "Limit" und "Offset" stückeln (wir reden da von
> 100.000-er Blöcken).
>
> Ich habe gerade ein Anfrage geschickt, die nach 17 Sekunden 4.900 Treffer
> brachte, mit angehängtem "OFFSET 0 LIMIT 100000" hatte ich nach 2 Minuten
> noch kein Ergebnis...
>
> Habt Ihr mir einen Tipp, wonach ich auf dem Server suchen / was ich
> umstellen sollte?
>
> Gruß und Danke vorneweg
>
> Marc
>
> ==
>
> Marc Neininger, Singen/Htwl.
>

--
--
2ndQuadrant - The PostgreSQL Support Company.
www.2ndQuadrant.de

2ndQuadrant Deutschland GmbH; Spielberger Str. 49; 70435 Stuttgart

GF: Harald Armin Massa
Amtsgericht Stuttgart, HRB 736399
USt-IdNr: DE277403954


From: Thomas Kellerer <thomas(at)kellerer(dot)eu>
To: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Frage zu "Limit" und "Offset"
Date: 2019-10-28 15:10:20
Message-ID: 5f356168-eeb3-f654-68ce-847587c5a059@kellerer.eu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

> ich arbeite mit einer Tomcat-Applikation, die als Backend einen
> Postgres 9.6 Server hat. Da die Applikation zum Teil recht viele
> Daten anfordert, kann man die angefragten Daten mittels "Limit" und
> "Offset" stückeln (wir reden da von 100.000-er Blöcken).
>
> Ich habe gerade ein Anfrage geschickt, die nach 17 Sekunden 4.900
> Treffer brachte, mit angehängtem "OFFSET 0 LIMIT 100000" hatte ich
> nach 2 Minuten noch kein Ergebnis...
>
> Habt Ihr mir einen Tipp, wonach ich auf dem Server suchen / was ich
> umstellen sollte?
Keine direkte Lösung, aber dieser Artikel hier gibt viele Tips:

https://use-the-index-luke.com/no-offset

Ansonsten ist der erste Schritt immer der Blick auf den Execution Plan.


From: Andreas Kretschmer <andreas(at)a-kretschmer(dot)de>
To: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Frage zu "Limit" und "Offset"
Date: 2019-10-28 15:11:19
Message-ID: 1ff25793-9533-a577-9cb6-798d5351544a@a-kretschmer.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Am 28.10.19 um 15:56 schrieb marc(at)champagnierle(dot)de:
> Hi,
>
> ich arbeite mit einer Tomcat-Applikation, die als Backend einen
> Postgres 9.6 Server hat.
> Da die Applikation zum Teil recht viele Daten anfordert, kann man die
> angefragten Daten mittels "Limit" und "Offset" stückeln (wir reden da
> von 100.000-er Blöcken).
>
> Ich habe gerade ein Anfrage geschickt, die nach 17 Sekunden 4.900
> Treffer brachte, mit angehängtem "OFFSET 0  LIMIT 100000" hatte ich
> nach 2 Minuten noch kein Ergebnis...
>
> Habt Ihr mir einen Tipp, wonach ich auf dem Server suchen / was ich
> umstellen sollte?
>
>

wie sieht denn das EXPLAIN ANALYSE dazu aus?

Andreas

--
2ndQuadrant - The PostgreSQL Support Company.
www.2ndQuadrant.com


From: marc(at)champagnierle(dot)de
To: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Frage zu "Limit" und "Offset"
Date: 2019-10-28 15:32:44
Message-ID: 2078648991.23392.1572276765013@email.ionos.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hi,

ich erspar' Euch die 110 Zeilen dazwischen.

Planning time: 35.105 ms
Execution time: 728266.526 ms

Das Datenmodell ist etwas umfangreicher (500 Relationen) und die Query hat (aktuell) 9.000 Zeichen. Und da ich sie selbst nicht zu 100% verstehe, traue ich mich nicht, die Query zu posten...

Vielen Dank auch für den Link zum Thema Offset / WINDOW! Soweit war ich in der Datenbänkerei noch nie drin, aber ich schätze, da muss ich rein und durch.

Danke nochmal und ich halt' Euch auf dem Laufenden.

Gruß
Marc

> Andreas Kretschmer <andreas(at)a-kretschmer(dot)de> hat am 28. Oktober 2019 um 16:11 geschrieben:
>
>
>
>
> Am 28.10.19 um 15:56 schrieb marc(at)champagnierle(dot)de:
> > Hi,
> >
> > ich arbeite mit einer Tomcat-Applikation, die als Backend einen
> > Postgres 9.6 Server hat.
> > Da die Applikation zum Teil recht viele Daten anfordert, kann man die
> > angefragten Daten mittels "Limit" und "Offset" stückeln (wir reden da
> > von 100.000-er Blöcken).
> >
> > Ich habe gerade ein Anfrage geschickt, die nach 17 Sekunden 4.900
> > Treffer brachte, mit angehängtem "OFFSET 0  LIMIT 100000" hatte ich
> > nach 2 Minuten noch kein Ergebnis...
> >
> > Habt Ihr mir einen Tipp, wonach ich auf dem Server suchen / was ich
> > umstellen sollte?
> >
> >
>
> wie sieht denn das EXPLAIN ANALYSE dazu aus?
>
>
>
> Andreas
>
> --
> 2ndQuadrant - The PostgreSQL Support Company.
> www.2ndQuadrant.com
>
>
>

==

Marc Neininger

Staufenstrasse 19

78224 Singen

07731 - 3190508


From: Andreas Kretschmer <andreas(at)a-kretschmer(dot)de>
To: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Frage zu "Limit" und "Offset"
Date: 2019-10-28 16:05:25
Message-ID: 0f33493e-8e96-36c5-1afd-69517b6a3191@a-kretschmer.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Am 28.10.19 um 16:32 schrieb marc(at)champagnierle(dot)de:
> Hi,
>
> ich erspar' Euch die 110 Zeilen dazwischen.

die wären allerdings von Interesse gewesen ;-)

>
> Planning time: 35.105 ms
> Execution time: 728266.526 ms

das ist schon eine relativ lange Planungszeit. Das *könnte* ein Indix
auf Bloat in den Katalogen sein, muß aber nicht.

Andreas

--
2ndQuadrant - The PostgreSQL Support Company.
www.2ndQuadrant.com


From: Andreas Kretschmer <andreas(at)a-kretschmer(dot)de>
To: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Frage zu "Limit" und "Offset"
Date: 2019-10-28 16:44:35
Message-ID: 50a875c0-e16e-b329-c172-43f64015f11a@a-kretschmer.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Am 28.10.19 um 15:56 schrieb marc(at)champagnierle(dot)de:
> Da die Applikation zum Teil recht viele Daten anfordert, kann man die
> angefragten Daten mittels "Limit" und "Offset" stückeln (wir reden da
> von 100.000-er Blöcken).

die Frage, die sich hier stellt: warum fordert die Anwendung so viele
Daten an? Vielleicht könnte man die Daten auch innerhalb der DB
verarbeiten, aber dazu müßte man natürlich Dinge wissen,
die wir nicht wissen.

Andreas

--
2ndQuadrant - The PostgreSQL Support Company.
www.2ndQuadrant.com


From: marc(at)champagnierle(dot)de
To: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Frage zu "Limit" und "Offset"
Date: 2019-10-29 11:42:54
Message-ID: 934793859.34820.1572349374708@email.ionos.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hi,
ich habe einen Fehler tatsächlich identifizieren können. Und zwar ist mein ORDER BY nicht absolut eindeutig.

Dies muss bei der Verwendung von LIMIT und OFFSET aber sein, damit die Datenbank nicht ausversehen zweitausendmal die selben Daten schickt, weil sie zufällig jedes Mal an einer anderen Stelle steht und nicht durch ordentliche Sortierung immer an der selben Stelle...

Danke einstweilen mal

Marc

> Andreas Kretschmer <andreas(at)a-kretschmer(dot)de> hat am 28. Oktober 2019 um 17:05 geschrieben:
>
>
>
>
> Am 28.10.19 um 16:32 schrieb marc(at)champagnierle(dot)de:
> > Hi,
> >
> > ich erspar' Euch die 110 Zeilen dazwischen.
>
> die wären allerdings von Interesse gewesen ;-)
>
> >
> > Planning time: 35.105 ms
> > Execution time: 728266.526 ms
>
> das ist schon eine relativ lange Planungszeit. Das *könnte* ein Indix
> auf Bloat in den Katalogen sein, muß aber nicht.
>
>
> Andreas
>
> --
> 2ndQuadrant - The PostgreSQL Support Company.
> www.2ndQuadrant.com
>
>
>

==

Marc Neininger

Staufenstrasse 19

78224 Singen

07731 - 3190508