Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Duża ilość zapytań do bazy

Ostatnio zmodyfikowano 2016-06-19 09:28
Autor Wiadomość
mrci
Temat założony przez niniejszego użytkownika
Duża ilość zapytań do bazy
» 2016-06-08 12:31:25
Witam,

Mam takie małe pytanie do osób, które gdzieś kiedyś działały z bazami. Otóż chciałbym się dowiedzieć jak baza będzie się zachowywać przy dużej systematycznej ilości zapytań. Mam na myśli ok. 300tyś użytkowników, gdzie każdy w odstępie 15 sec robi INSERT i SELECT(nie wiele danych, dosłownie 2 ciągi znaków). Czy myślicie że baza się przykrztusi, czy łyknie to z przysłowiowym "palcem w dupie" :).

Pozdrawiam i dziękuję za wszystkie odpowiedzi :)
P-148966
darko202
» 2016-06-08 13:25:03
Jeśli nic się nie zmieniło - raczej nie uda się 


Niezależnie od nazwy bazy danych faktem jest, że każda baza danych ma określoną ilość uchwytów, przy pomocy których można jednocześnie dostać się do takiej bazy.
To zależy od typu bazy, oraz ustawień, które skonfiguruje administrator.
czas otwarcia, Insert, Select i zamknięcia (zwolnienia zasobu też trwa).


To łatwo sprawdzić. Otwierasz kolejne połączenie, aż pojawi się komunikat błędu.
Pracowałem kiedyś z bazą Oracle 9 ustawienia standardowe, która miała takich uchwytów 800 i kolejnych nie pozwalała otwierać.

Jednocześnie, widziałem też taka na której pracowało kilka tysięcy użytkowników.
była jednak zainstalowana na specjalnym serwerze (koledzy mówili, że wartym wtedy gdzieś 1 mln. USD lub EURO) no i specjalnie konfigurowanym przez specjalistów Oracla.
Przetwarzanie dzienne odbywało się w max 90 wątkach - przy większej ilości praca zwalniała.
baza miała wielkość kilku TB (~800 tabel)


mówisz o 300 000 operacji /15s = 20 000 operacji/s
a to dużo dlatego z ww. powodów raczej nie jest to możliwe

Dodatkowym pytaniem (ograniczeniem) jest, czy będzie to 20 000 operacji, czy 20 000 użytkowników/s 

1 użytkownik pewnie bez trudu wykona kilka operacji na s
 
P-148968
mrci
Temat założony przez niniejszego użytkownika
» 2016-06-08 14:01:30
raczej ma być to na zasadzie że użytkownik co 15 sec będzie aktualizował swoje dane w bazie(dosłownie dwa stringi), a po tym pobierał dane użytkowników , ktorzy mają takie same te dwa stringi jak on, w duzym uproszczeniu
P-148970
darko202
» 2016-06-09 08:14:56
Czyli mówmy o :
1) 20 000 użytkowników/s
2) modyfikujących 2 stringi
3) szukających i pobierających dane użytkownikach z identycznymi stringami

p.3 przeszukiwanie a w szczególności stringów (jeśli chcemy, aby było to szybko) wymaga założenia indeksu na klucz poszukiwania (największy koszt to przesłanie znalezionych danych)

p.2 z uwagi na punkt 3 musimy modyfikować indeks (to już trochę kosztuje)

p.1 z uwagi na to konieczne jest masowe uzyskiwanie i zwalnianie uchwytów do bazy - trudniejsza wersja


wydaje mi się że jeśli nie mówimy, o jakimś super specjalizowanym serwerze to nie ma szans na osiągnięcie takiej wydajności
P-148975
DejaVu
» 2016-06-19 09:28:05
Skoro masz te 300k użytkowników to sprawdź na żywym organizmie. Ale sądzę, że nie masz, bo byś nie zadawał takich naiwnych pytań. Wystarczy zrobić prostą pętlę for robiącą insert-y i update-y na chama i liczyć ile obiegów pętli wykona na sekundę.

/edit:
Dodam jeszcze, że ostatnio testowałem połączenie jednego klienta z bazą danych MS SQL. Na zapytaniu w stylu
SELECT 'tekst';
 jeden klient był w stanie obsłużyć niecałe 7 tysięcy zapytań na sekundę (z poziomu C++). Nie wiem czy wąskim gardłem była komunikacja sieciowa z bazą (lokalną) czy ograniczenia bazy danych. W każdym razie jeżeli nie jesteś w stanie sam wymyślić jak robić proste benchmarki to nie ma nawet sensu mówić o wydajnym systemie przetwarzającym cokolwiek.
P-149260
« 1 »
  Strona 1 z 1