Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL]Bardzo duża baza danych i problem z prędkością wyszukiwania
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
yafu
Baza o której mowa powiększa się codziennie o kilka GB danych więc po roku jej wielkość może sięgnąć 1TB.
>90% powierzchni bazy zajmuje pole o nazwie "content".
Jest to pole statyczne, po którym nie będą prowadzone operacje wyszukiwania ani żadne inne (jedynie wyświetlanie tych danych).

Wyszukiwanie będzie tylko po kolumnie 'title' która zawiera maksymalnie 20 znaków.

Chciałem zapytać, jak organizować dane, żeby wyszukiwanie po tytule nie trwało eony.

1. Czy objętość kolumny 'content' ma jakiś wpływ na szybkość wyszukiwania po kolumnie 'title' ?
2. Czy przeniesienie kolumny 'content' do osobnej tabeli przyśpieszy wyszukiwanie po 'title' ?
3. Czy przeniesienie danych z kolumny 'content' do pliku na dysku przyśpieszy wyszukiwanie w porównaniu do pkt 1 i pkt 2 ?
mmmmmmm
1. nie
2. nie, raczej zwolni minimalnie bo będziesz musiał użyć drugigo indeksu do łączenia tabel wynikowych
3. nie
b4rt3kk
Jakiego typu wyszukiwanie? Coś w stylu REGEXP czy LIKE?
phpion
Przerabiałem podobny problem przy serwisie, w którym baza również bardzo szybko rosła zajmując -dziesiąt giga. Mogę zatem nieco Ci poradzić:
1. Utwórz kolumnę tsvector przechowującą dane do TSearch i załóż na niej indeks typu gist.
2. Jeśli wyszukiwanie odbywa się w jakiś zakresach czasowych to warto pomyśleć o partycjonowaniu tabeli (np. 1 miesiąc = 1 tabela).
3. Warto zapłacić za odpowiednią konfigurację samego Postgresa przez odpowiedniego fachowca.
4. Nie licz na cuda smile.gif we wspominanym przeze mnie serwisie finalnie przeszliśmy na wyszukiwanie w tle i powiadamianiu mailowym o uzyskaniu wyniku tongue.gif

PS: Przenoszę do odpowiedniego działu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.