Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL/INSERT IGNORE]Wydajność przy kilkunastu/kilkuset mln rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
juzwa
Mam pytanie do praktyków, tych którzy mają doświadczenie - bo ja z aż tak obszernymi bazami nie miałem do czynienia.

Sytuacja wygląda tak, że chcę zrobić serwis przez WWW (php, MySQL - może coś innego jest lepsze, ale na razie niech będzie że MySQL)

Będzie on prezentował różne próbki na życzenie klienta - oznacza to, że PHP będzie (najprawdopodbniej przez SOAP) wysyłał żądanie o próbki i kontekst, z tym, że dany kontekst jest niezmienny i zamiast po SOAP-ie ciągnąć parę razy to samo można by go zapisać w bazie i odczytywać. I w przypadku gdy pytam o próbkę X mam w bazie kontekst X-a. Sam kontekst składa się z n elementów - gdy np przy próbce Y będzie mi brakowało do kontekstu elementu np nr 7 to zapytam o kontekst i dostanę w odpowiedzi całość kontekstu - wobec tego tworzę zapytanie z INSERT IGNORE i mam bazę kontekstów uzupełnioną.

Z tym, że tych danych będzie mnóstwo, odpytanie SOAP-a trwa jakieś 2-3 sek do 4, no i teraz jak sobie coś takiego zrobiłem taki prototyp to mi chodzi ładnie, bo sam siedzę na tym, w bazie nawet nie ma 1% tego co może być przy normalnym użytkowaniu, ale gdy będzie jakiś realny świat, i będzie można sobie coś tam sprawdzać/szukać/pobierać to baza będzie się zapełniać w tempie dość sporym i nie wiem czy po miesiącu taki serwis WWW będzie do niczego, ze względów wydajnościowych bo będzie już w nim np 10 mln rekordów, a porównywanie klucza dla 10 mln rekordów nie jest pewnie rzeczą prostą

Sam rekord to 3 liczby opisujące kontekst
dwie flagi (boolean)
dana kontekstowa (różnie ale tak +/- max 30kb)

+ jest taki, że tych danych jest skończona ilość (sporo bo sporo, ale skończona coś koło 500 mld - z tym, że prawdopodobieństwo różnie się rozkłada z tego co wiem to niecały miliard odpowiada 95% występowania) (sama próbka może być w różnym kontekście od czego zależą wyniki) Czyli pewnie docelowo należy sie +/- z

jak to może wyglądać, czy ogólnie pakować się w coś takiego, czy niech sobie ciągnie po SOAP, przynajmiej zawsze będzie to +/- tyle samo trwało

Ogólnie jak wygląda praca bazy przy milionach rekordów - INSERT IGNORE i SELECT do tego
sticker
w mysql przy około 100tysiącach rekordów spada wydajność dość znacznie (przynajmniej tak z doświadczenia mi wyszło), generalnie jak założysz index i będziesz robił na nim full text search to pewnie troche będzie trwało. Przeprowadź benchmarki i podziel sie wynikami chętnie sie dowiem smile.gif
c3zi
Cache, cache, cache .. A do wyszukiwania najlepiej użyj Sphinxa - Sphinx.
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.