Das Einfügen von "größeren" Daten in PostgreSQL macht das System schneller?

8

So habe ich das folgende Verhalten bei der Verwendung von PostgreSQL miterlebt.

Ich habe eine Tabelle wie diese: (id INTEGER ..., msg VARCHAR(2000)) und dann führe ich zwei Programme A und B aus, die genau dasselbe tun, nämlich 20000 Einfügungen und dann 20000 Abfragen (basierend auf ihrer ID). Das einzige Unterschied ist, dass das Programm A fügt mit Nachrichten enthält 2000 Zeichen, während B nur Nachrichten mit höchstens 10 Zeichen einfügt.

Die Sache ist, dass die durchschnittliche Zeit aller Einfügungen und Abfragen in A ist immer ungefähr ~ 15ms kleiner als in B , was nicht wirklich Sinn ergibt, da A "größere" Daten hinzufügt.

Irgendwelche Ideen oder Hinweise, warum das passieren könnte? Könnte es sein, dass wenn nicht verwendet wird alle Zeichen von msg verwendet der Rest des Speicherplatzes für andere Zwecke und wenn msg voll ist, ist das System also schneller?

Basierend auf @ Dan Bracuk Kommentar. Ich spare die Zeit bei verschiedenen Ereignissen und stelle fest, dass Folgendes passiert, im Programm A gibt es einige Male, dass Einfügungen wirklich sehr schnell sind, während dies im Programm B nie der Fall ist und deshalb A ist schneller als B , aber ich kann dieses Verhalten auch nicht erklären.

    
insumity 10.11.2013, 19:25
quelle

1 Antwort

2

Ich kann das nicht ohne nähere Einzelheiten über Ihr Setup und Ihre Programme reproduzieren, daher ist das Folgende nur eine begründete Vermutung. Es ist denkbar, dass Ihre Beobachtung auf TOAST zurückzuführen ist. Sobald ein Textfeld eine bestimmte Größe überschreitet, wird es in einer physisch getrennten Tabelle gespeichert. Daher ist die Haupttabelle tatsächlich kleiner als in dem Fall, in dem alle Textwerte inline gespeichert sind und die Suche daher schneller sein kann.

    
Peter Eisentraut 11.11.2013 17:45
quelle

Tags und Links