ziemlich versptätet, aber hier kommen die Ergebnisse:
Ich habe den bitmap index scan mittles
Code:
set enable_bitmapscan to off;
abgeschaltet und erhalte folgendes Ergebnis wenn ich die drei Suchen schnell hintereinander ausführe:
Code:
explain analyse SELECT editionid
FROM search_book sb
WHERE textsearchable_index_gin @@ plainto_tsquery('german','liebe');
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
Seq Scan on search_book sb (cost=0.00..1453599.27 rows=6504 width=4) (actual time=41.037..41128.515 rows=4948 loops=1)
Filter: (textsearchable_index_gin @@ '''lieb'''::tsquery)
Total runtime: 41132.706 ms
(3 Zeilen) Code:
explain analyse SELECT editionid
FROM search_book sb
WHERE textsearchable_index_gin @@ plainto_tsquery('german','himmel');
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Seq Scan on search_book sb (cost=0.00..1453599.27 rows=6504 width=4) (actual time=4.651..3665.698 rows=1775 loops=1)
Filter: (textsearchable_index_gin @@ '''himmel'''::tsquery)
Total runtime: 3667.116 ms
(3 Zeilen) Code:
explain analyse SELECT editionid
FROM search_book sb
WHERE textsearchable_index_gin @@ plainto_tsquery('german','liebe');
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Seq Scan on search_book sb (cost=0.00..1453599.27 rows=6504 width=4) (actual time=1.607..3203.822 rows=4948 loops=1)
Filter: (textsearchable_index_gin @@ '''lieb'''::tsquery)
Total runtime: 3207.170 ms
(3 Zeilen) Ich gehe mal davon aus, dass das Durchsuchen mit bitmap index scan also schneller geht. Komisch ist, wenn ich bei aktivem bitmap index scan eine Weile nichts gesucht habe komme ich auf die langen Suchzeiten, wenn kurz vorher eine Suche erfolge, dann ist die Suchzeit unter einer Sekunde. Die Tabelle enthält etwa 10 mio. Zeilen. Bei deaktiviertem bitmap index scan komme ich bei der ersten Suche wie zu sehen auch auf sehr viel längere Suchzeiten. Schmeißt postgres den Suchindex irgenwann aus dem Cache? Oder wie ist die Differenz zwischen ersten und folgenden Suchen zu erklären?
Lesezeichen