2015-10-13 13 views
6

Jestem ciekawy. Mam taki przepływ: mamy dużą kolekcję/tabelę z dużą ilością danych. I niech zapytanie zorientowane na select będzie długie i zajmie 3 sekundy.Długi wynik zapytania na db z równoczesnym zapisem w tym samym czasie

Jednak oczekujemy bardzo równoczesnego środowiska i każdej sekundy otrzymujemy 100 nowych rekordów w naszej bazie danych.

Załóżmy, że mamy zapytanie, a przed rozpoczęciem tej kwerendy mamy 1000 pozycji, które spełniają te zapytanie. Kwerenda trwa 3 sekundy, a każda sekunda to 50 nowych elementów pasujących do zapytania dodanego do bazy danych. Moje pytania brzmią - w wyniku tego zapytanie powraca do mnie (czy jest to nadal 1000 lub 1150 lub coś pośredniego) i jak to zależy od innego silnika bazy danych (SQL, NoSQL). O

To nie jest pytanie o dokładną liczbę, ale nieco więcej - dlaczego to będzie ten numer.


Wygląda na to, że pytanie jest nieco szerokie. Ograniczmy DB do MySQL, Postgres, MongoDB i Cassandra.

Odpowiedz

1

Mówiąc ogólnie (głównie dlatego, że nie podano nazwy konkretnej bazy danych), poziom współbieżności bazy danych jest konfigurowalny i należy do kategorii dostrajania wydajności.

Niektóre granulacji zwykłe zamknięcia są:

  • rzędowy - tylko jeden wiersz danych jest zablokowana w czasie
  • strony - niektóre grupy rzędów jest zablokowana w czasie
  • TABELA - cały tabela jest zablokowana

Tak więc, jeśli używałeś blokady poziomu ROW, prawdopodobnie uzyskałbyś wszystkie 1150 wyników kosztem wyższego poziomu zamknięcia. Lub, jeśli używałeś blokady poziomu TABEL, uzyskałbyś bardzo szybko 1000 wyników, ale kosztem zablokowania zapisu danych do bazy danych przez 3 sekundy.

+0

Dzięki. Więc jeśli jest to blokada stołu, to wszystkie żądania zapisu wykonane podczas zapytania zakończą się niepowodzeniem? – Ph0en1x

+0

@ ph0en1x niezupełnie. Żądania zapisu zostaną zablokowane (ponieważ oczekują na blokadę) i mogą przestać działać z powodu przekroczenia limitu czasu, jeśli spędzają zbyt wiele czasu na oczekiwaniu na blokadę. Ale wartości limitu czasu są również ogólnie konfigurowalne. –

+0

Tak, rozumiem to. Pytanie było jednak ogólne. – Ph0en1x

Powiązane problemy