Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ilość rekordów i lokowanie w bazie.
Posio
post
Post #1





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


Siemka, mam plik CSV, chce go wrzucić do bazy danych. Są to rekordy, do których w przyszłości będzie dopasowywane to co użytkownik wpisał w input. Mam około 100 000 000 rekordów (stringów) co waży ponad 1GB.
System będzie działał na zasadzie użytkownik wpisuje -> system znajduje podobny. Teraz moje pytanie jak rozlokować te rekordy tak, aby wyszukiwanie trwało jak najkrócej . Myślałem o posortowaniu alfabetycznym i np powrzucaniu do różnych tabel odpowiadającym pierwszym literom stringów. Co o tym myślicie ? Ma to sens ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
matiit
post
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Baza danych ma coś takiego jak Indeksy.
Tylko hmm... ja np. nie wiem jak wyglądają Twoje dane mniej więcej. Podaj może jakiś mały kawałek informacji (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Posio
post
Post #3





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


wygląda to tak:


content || hits
testtest || 3

mam założony UNIQUE na content bo tekst z założenia się nie powtarza ...
Myślałem o czymś więcej niż tylko o pozakładaniu indexów, ale teraz zauważam że rozłożenie tego na wiele tabel to baaaardzo głupi pomysł...

Ten post edytował Posio 25.04.2013, 21:37:31
Go to the top of the page
+Quote Post
franki01
post
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Wrzucanie do wielu tabel ma sens tylko w przypadku jak siedzisz na hostingu i/albo masz mało RAMu. Jeżeli RAMu masz przynajmniej te 10-12 GB, wrzuć wszystko w jedną tabele, mądrze nadaj indeksy - jednoznaczne i główne wpływają na szybkość wyszukiwania. Do tego koniecznie dobrze poustawiać ilość cache dla mysql w pliku konfiguracyjnym (wykorzystać RAM prawie do maksimum) i będzie śmigać. Najważniejsze są poprawne indeksy trzymane bezpośrednio w RAMie.

EDIT: Jeszcze jedna rzecz. Przed wrzucaniem wszystkiego z CSV do bazy danych wyrzuć wszystkie indeksy. Nadaj je dopiero jak wszystko wrzucisz. Import trwa wtedy zauważalnie szybciej.

Ten post edytował franki01 26.04.2013, 22:59:36
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.12.2025 - 16:07