Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PostgreSQL]Bardzo duża baza danych i problem z prędkością wyszukiwania
yafu
post 28.06.2013, 10:31:25
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 1.06.2013

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował yafu 28.06.2013, 10:33:30
Go to the top of the page
+Quote Post
mmmmmmm
post 28.06.2013, 11:30:58
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


1. nie
2. nie, raczej zwolni minimalnie bo będziesz musiał użyć drugigo indeksu do łączenia tabel wynikowych
3. nie
Go to the top of the page
+Quote Post
b4rt3kk
post 28.06.2013, 12:30:15
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
phpion
post 28.06.2013, 13:36:36
Post #4





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 10:20