![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 10.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam pewien problem. Otóż chciałbym zrobić niestandardowe wyciąganie rekordów z bazy danych. Przykadowa baza danych:
System pobiera pojedynczo rekordy(ASC id) a następnie je wykonuje zmieniając status na 1. Cały problem polega na tym że wykonanie jednego procesu trwa około minuty i gdy jeden user doda trochę więcej rekordów to reszta (która doda trochę później) czeka kilkanaście minut na rozpoczęcie wykonywania co ich trochę irytuje. Chciałbym przerobić zapytanie aby rekordy były wybierane w inny spsób, a mianowicie po jednym rekordzie od każdego usera. Czyli w kolejności następującej(id): 1,4,6,2,5,3 Czy ktoś wie jak takie coś zrobić? Oczywiście w międzyczasie inny user może dodać kolejny proces i wtedy jego pierwszy wpis musi zostać wybrany w ciągu trwającego przejścia po wszystkich userach. Z góry dzięki, pozdrzwiam Żaden "specjalista" nie umie pomóc? W innych postach jakoś "specjaliści" się wypowiadają. Ktoś posiada wiedzę wykraczającą ponad podstawowe zapytania? Ten post edytował robson_admin 17.12.2009, 23:11:44 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Wiesz, trudno coś więcej wymyśleć nie znając szczegółów tego jak dział ten system.
Ja bym podszedł do tego tak: Zrobiłbym dodatkową tabelę, do której przy pomocy zapytania powyżej przerzucałbym procesy do wykonania (wystarczy same id). Jak długo w tej tabeli są niewykonane procesy, tak długo system zajmuje się ich wykonywaniem. Gdy wszystkie wykona, sięga do tabeli proces po nową porcję. Podobną metodę można zastosować dodając do tabeli proces nową kolumnę, w której zapisywałbyś na przykład czas rozpoczęcia wykonywania danej porcji procesów. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 11:21 |