Hab den Query mal mit "Buffers On" Explain laufen lassen:
Soweit ich den "Buffers On" Explain verstanden habe, liest er da nichts mehr von der Platte, oder sehe ich das falsch? Die Zahl ist immer mit "shared hit=XXX" angegeben.Code:Limit (cost=236550.97..236551.02 rows=20 width=8) (actual time=4960.441..4960.449 rows=20 loops=1) Buffers: shared hit=66210 CTE bauteil_ids -> Bitmap Heap Scan on bauteile (cost=9.59..17.81 rows=10 width=4) (actual time=0.109..0.134 rows=10 loops=1) Recheck Cond: (id = ANY ('{3145,4466,4323,4452,3095,3195,4131,3140,3189,4512}'::integer[])) Buffers: shared hit=27 -> Bitmap Index Scan on bauteile_id (cost=0.00..9.59 rows=10 width=0) (actual time=0.087..0.087 rows=10 loops=1) Index Cond: (id = ANY ('{3145,4466,4323,4452,3095,3195,4131,3140,3189,4512}'::integer[])) Buffers: shared hit=21 -> Sort (cost=236533.15..237217.85 rows=273879 width=8) (actual time=4960.439..4960.442 rows=20 loops=1) Sort Key: (sum(CASE WHEN (NOT (alternatives: SubPlan 2 or hashed SubPlan 3)) THEN 1 ELSE 0 END)), (count(*)) Sort Method: top-N heapsort Memory: 26kB Buffers: shared hit=66210 -> HashAggregate (cost=163514.37..229245.33 rows=273879 width=8) (actual time=4546.799..4814.703 rows=549890 loops=1) Buffers: shared hit=66208 -> Seq Scan on zuordnung (cost=0.00..121800.07 rows=5561907 width=8) (actual time=0.033..1145.416 rows=5442128 loops=1) Buffers: shared hit=66181 SubPlan 2 -> CTE Scan on bauteil_ids (cost=0.00..0.22 rows=1 width=0) (never executed) Filter: (id = $1) SubPlan 3 -> CTE Scan on bauteil_ids (cost=0.00..0.20 rows=10 width=4) (actual time=0.111..0.138 rows=10 loops=1) Buffers: shared hit=27 Total runtime: 4967.197 ms
Wir haben 4 GB für die Shared Buffers reserviert, die Datenbank ist gedumpt ungefähr 400 MB groß.
Wir hatten am Anfang 4 GB Ram. Beim Sprung von 4 GB auf 8 GB ist der Query viel schneller geworden, dann haben wir von 8 GB auf 16 GB hochgerüstet, und da war es dann nur noch ca. 1 Sekunde Unterschied.
Noch mehr Speicher und eine schnellere Platte (SSD) z.B. würden da doch auch nicht mehr weiterhelfen, wenn die komplette Datenbank schon im RAM ist, oder sehe ich das falsch?



LinkBack URL
About LinkBacks
Zitieren


Lesezeichen