Hier zu nehmen ist meine Tabelle:SELECT * aus einfacher Tabelle mit 50k Aufzeichnungen scheint 40 Sekunden
CREATE TABLE public.logs (
logid bigint NOT NULL DEFAULT nextval('applog_logid_seq'::regclass),
applicationname character varying(50),
loglevel character varying(10),
logmessage character varying(500),
stacktrace character varying(4096),
occurredon timestamp without time zone,
loggedon timestamp without time zone,
username character varying(50),
groupname character varying(50),
useragent character varying(512),
CONSTRAINT applog_pkey PRIMARY KEY (logid)
);
Wenn ich laufe SELECT *...
drauf, dauert es 40 Sekunden 50000 Zeilen auf meinem lokalen Rechner zurückzukehren. Ich habe die gleiche Tabelle auf einer lokalen Installation von SQL Server, und das dauert weniger als eine Sekunde, um die gleiche Menge an Daten zurückzugeben.
Ich bin in der Mitte einer Bewertung von PostgreSQL für unseren neuen Stapel und das ist sehr beunruhigend für mich. Warum mache ich falsch/warum ist PostgreSQL so langsam?
Edit:
Hier ist, was ich von EXPLAIN (BUFFERS, ANALYZE, TIMING OFF) SELECT * FROM public.logs
erhalten:
So sieht es aus wie der Server in dieser etwa 6 ms für die Ausführung geht. Ich denke, das bedeutet, dass der gesamte Overhead in pgAdmin III liegt, aber wie kann SSMS das so viel schneller machen?
Hat diese Tabelle starken "UPDATE" oder "DELETE" Datenverkehr? – jmelesky
Führen Sie SQL Server und PostgreSQL gleichzeitig auf Ihrem Computer aus? Wie viel RAM haben Sie? – Alex
Sind Sie sicher, dass Sie in beiden Fällen tatsächlich das gesamte Resultset durchlaufen? Oder ist es möglich, dass Sie zum Beispiel nur die ersten x Zeilen in SQL Server abrufen? Und wenn PostgreSQL nicht lokal läuft, dann besteht kein Zweifel, dass dies kein fairer Vergleich ist. – sstan