Re: Volltextsuche/ Balancing

From: Bernd Helmle <mailings(at)oopsware(dot)de>
To: apoc9009(at)yahoo(dot)de
Cc: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Volltextsuche/ Balancing
Date: 2005-12-09 12:52:43
Message-ID: 2DDEB613A7CBA8CD4A2DFC14@[192.168.100.105]
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

--On Freitag, Dezember 09, 2005 13:12:51 +0100 apoc9009(at)yahoo(dot)de wrote:

>>
>> Ja, das geht ab 8.0 (oder 8.1?)
>>
>>
>
> Ähm, ich fragte danach ob ich Tabellen in einen gesonderten Tabelspace
> auslagern kann und nicht
> danach das ich beim erstellen einer DB einen kompletten Tablespace für
> alle Tabellen einmalig an einer
> bestimmten Position im Dateisystem hinterlegen kann.
>

Hmm genau das hat doch Andreas beantwortet? Kurzum, es geht:

CREATE TABLESPACE tablespace LOCATION '/anywhere';
CREATE TABLE <yourstuff> TABLESPACE tablespace;

> Der Sinn und Zweck ist es, das nur die eine Tabelle (Nachrichtentabelle)
> dann in einem Tablespace verwaltet
> wird, der auf ein gesondertes Festplattenlaufwerk oder Raid verzweigt.
> Das ist wie gesagt nicht das selbe
> wie die ganze DB dort zu hinterlegen. Bei ORACLE 9i und 10g ist sowas
> recht unproblematisch, da kann
> man dann auch noch alternativ Tabelpartintioning zuschalten (falls Dir
> das was sagt).
>

Du kannst dir unter 8.1 mal Constraint-Exclusion ansehen:

http://www.postgresql.org/docs/8.1/static/ddl-partitioning.html

Generell wäre es interessant zu wissen, mit welchem Datenaufkommen du
rechnest?

> Ich hoffe das dazu jemand anderes hier (mit mehr Erfahrung) noch etwas
> erklärendes und hilfreiches
> posten kann.
>

Ich denke Andreas hat genügend Erfahrung...

>>> Wie gestalte ich unter Postgres 8.1 eine Volltextsuche die nach
>>> beliebigen Strings
>>> suchen soll (z.B mit iLike) ?
>>>
>>>
>>
>> Du kannst zwar die Spalte indizieren für schnelleren Zugriff, allerding
>> wird eine Suche nach '*foobar*' einen Seq-Scan bewirken. Indexe greifen
>> nur, wenn der Suchstring linksbündig ist, also links keine Wildcards
>> stehen.
>>
>>
>
> Wie soll man denn das nun wieder verstehen?
>
> Soll der Spalteninhalt einer Tabelle links ohne Blanks u.s.w angeordnent
> sein? Wenn ja würde
> ich sowas schon hinbekommen und eigentlich finde ich, dass das auch die
> normale Ausganglage
> ist (bin jetzt etwas verwirrt / weißt Du was Du da geschrieben hast?)
>

Ganz einfach: SELECT foo_text FROM foo WHERE foo_text LIKE '%text%'; wird
einen Sequential Scan verwenden, auch wenn ein Index auf foo_text existiert.

>> Abhilfe: tsearch2

Wenn du nach ganzen Worten innerhalb größerer Textspalten suchen willst,
ist das sicherlich die erste Wahl.

>
> "Gerüchte" Naja ok ich schaue es mir mal an, kann nicht schaden.
>
>> Ansonsten: Um Schwachstellen bzw. Performance-Probleme zu finden, gibt
>> es EXPLAIN, evtl. gepaart mit ANALYSE.
>>
>>
> bringt mir nicht sonderlich viel wenn eine Tabellenspalte komplett
> durchsucht werden muss.
> (es sollen ja alle Treffer zurückgelifert werden).
>

Das versteh ich nun wieder nicht...bedeutet dass, das du alle Tupel
selektierst, ohne WHERE-clause bzw. ohne Indizierung?

--
Thanks

Bernd

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Friedrich Stockebrand 2005-12-09 14:10:04 Re: Grundsatzproblem
Previous Message Andreas Kretschmer 2005-12-09 12:38:26 Re: Volltextsuche/ Balancing