# PostgreSQL langsam (Blob)



## verus (11. Jul 2008)

Moin,

ich speichere viele Blob's (OID) in der Datenbank. Leider ist die Geschwindgkeit mit der die Daten gelesen werden stark eingebrochen. Die Tabelle, in der die meisten Blob's gespeichert sind, besteht aus etwas mehr als 350.000 Einträgen. Bei der Anzahl von Blob's hatte ich noch nicht mit so einem Geschwindigekeitseinbruch gerechnet. Was mache ich falsch? Liegt es überhaupt an den Blob's oder sollte ich eine andere Stelle verdächtigen?

Interessant finde ich, dass die CPU Last auf 100% steigt. Ich hatte ehr damit gerechnet, dass die Festplatte am rödeln ist.

Auf die Daten wird via Hibernate zugegriffen. Eine Abfrage auf Java Seite macht Hibernate zu drei Queries. Zwei Queries greifen nur auf sehr kleine Tabellen zu, so dass ich diese als Performancebremse ausgeschlossen habe. Die dritte ist die mit den vielen Blob's.


----------



## maki (11. Jul 2008)

Wie groß ist die DB?


----------



## verus (11. Jul 2008)

Insgesamt ist sie 2,5 GB groß.


----------



## DP (11. Jul 2008)

vielleicht falscheoderfehlende indizies?


----------



## AlArenal (11. Jul 2008)

Zunächst einmal solltest du schauen womit der Rechner seine Zeit vertrödelt. Ist es das Programm? Ist es die SQL-Abfrage? Ist es das Lesen der Daten?

RDBMS haben gemeinhin 1001 performance-relevante Konfigurationsparamter, die entsprechend eingestellt werden möchten. Es hat durchaus seinen Grund, warum "Datenbankadministrator" ein eigener Berufsstand ist. Irgendwer muss nämlich Hardware, OS und RDBMS auf die Anwendung(en) abstimmen, Bottlenecks suchen und User in den Allerwertesten treten.

Am Anfang steht aber bei jedem Problem die Analyse.


----------



## Siassei (11. Jul 2008)

Hallo,

ich persönlich würde PostgreSQL nicht als RDBMS bezeichnen  :wink: PostgreSQL ist objektorientiert und daher immer etwas langsamer als andere Datenbanken. Aber das mit der CPU-Auslastung kommt mir jetzt auch etwas Spanish vor. Hast du schon eine kleine Analyse durchgeführt?


----------



## DP (11. Jul 2008)

select performance_problems from system;


----------



## AlArenal (11. Jul 2008)

Siassei hat gesagt.:
			
		

> Hallo,
> 
> ich persönlich würde PostgreSQL nicht als RDBMS bezeichnen  :wink:



Die PostgreSQL Macher tun dies aber sehrwohl: "PostgreSQL is a powerful, open source relational database system."
http://www.postgresql.org/about/
Es ist davon auszugehen, dass die am besten beurteilen können, was PostgreSQL ist und was nicht.



> PostgreSQL ist objektorientiert und daher immer etwas langsamer als andere Datenbanken.



Postgres ist grundsätzlich eine relationale Datenbank, keine objektorientierte. Es gibt lediglich OO Ansätze, wie das Ableiten von Tabellen.

http://de.wikipedia.org/wiki/Objektorientierte_Datenbank
http://de.wikipedia.org/wiki/RDBMS

Vielleicht mal etwas vorsichtiger mit Fachbegriffen umgehen, in deren Verwendung man nicht ganz sattelfest ist


----------



## verus (11. Jul 2008)

Danke für eure Hilfe. Das Problem lag an schlecht angelegten Indexen. Nun habe ich den Index richtig angelegt und schon funktioniert wieder alles wieder wunderbar schnell.


----------



## Siassei (11. Jul 2008)

AlArenal hat gesagt.:
			
		

> Siassei hat gesagt.:
> 
> 
> 
> ...


Hallo AlArena,

es war nicht bös gemeint :wink: Ich persönlich setze im privaten Bereich neben H2, PostgreSQL ein und finde es ist eine gute DB. Im Vergleich zu MySQL (da gibt es genügend schlechte Beispiele :wink: ) ist PostgreSQL bei größeren Datenmengen einfach deutlich langsamer. PostgreSQL ist aber wohl das einzige DB-System, dass den SQL-Standart so gut wie ganz unterstützt. Ausgenommen ein paar ganz kleine Ausnahmen  :wink:


----------



## AlArenal (11. Jul 2008)

Ja, leider setzt sich nicht immer das bessere Design durch. Ist immer gruselig, wenn Leute nicht verstehen wollen, dass AUTO_INCREMENT kein Standard ist... 

Ketzterisch könnte man sagen, MySQL ist das Windows der Datenbanken...


----------

