Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PostgreSQL _ [PostgreSQL]Bardzo duża baza danych i problem z prędkością wyszukiwania

Napisany przez: yafu 28.06.2013, 10:31:25

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 ?

Napisany przez: mmmmmmm 28.06.2013, 11:30:58

1. nie
2. nie, raczej zwolni minimalnie bo będziesz musiał użyć drugigo indeksu do łączenia tabel wynikowych
3. nie

Napisany przez: b4rt3kk 28.06.2013, 12:30:15

Jakiego typu wyszukiwanie? Coś w stylu REGEXP czy LIKE?

Napisany przez: phpion 28.06.2013, 13:36:36

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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)