![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 25.10.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich!
zmagam sie z problemem pobierania danych do wykresu. Chodzi o to, że użytkownik ma mozliwośc podania zakresu dat za jaki okres chce zobaczyć wykres. Danych za ten okres moze byc kilka, a może być 100milionów. Zakładam, że komponent wykresowy akceptuje powiedzmy 10000 punktów i tu pytanie: -czy mozna skonstruować takie zapytanie, aby w przypoadku gdy liczba rekordów wyniku była większa niż 100tysięcy to wtedy wyciągnie tylko co niektóre (kwestia algorytmu wyliczającego co ile punktów pobierać rekord do wyniku - np. jakiś mod) tak, żeby tabela końcowa wracająca z serwera do aplikacji miała nie wiecej niż te 100tysięcy wierszy? data zawarta w rekordach jest typu double (zmodyfikowana data julianska MJD). jesli ktoś bawił się z takim czymś to chetnie usłyszę którędy droga (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam Ten post edytował ky3orr 29.03.2009, 01:56:47 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Puki co staram się ujarzmić kilka zapytań jednocześnie Z racji, ze przeprowadzilem sobie wewnetrzny test, to masz juz gotowy kod:
A oto wynik: Ilosc wszystkich rekordow:6359961 Co ile:64 Ilosc przetworzonych rekordow:99375 Czas 7.34749293327 A tutaj kod w wersji maly_swd:
I wynik: Ilosc wszystkich rekordow:6359961 Co ile:64 Fatal error: Maximum execution time of 990 seconds exceeded Jak widac tabela ma ponad 6 mln rekordow. Dla mojej wersji skrypt wykonywał sie 7 sekund. Procesy systemowe w normie, podkoczyl jedynie troche proces mysql ale nie zuzywal wcale wiecej pamieci niz normalnie. Dla wersji malego skrypt wykonywal sie koszmarnie dlugo. Proces apachea wskoczyl mi na maxa i zajął ponad 300MB pamieci. Dodatkowo nie doczekalem sie na wynik. Musialem sztucznie zwiększyc $coIle na 20000 by doczekac sie wyniku. Oto on: Ilosc wszystkich rekordow:6359961 Co ile:20000 Ilosc przetworzonych rekordow:317 Czas 20.1107699871 PRzykladowo moj skrypt dla tej wartosci $coIle uzyskal nastepujace wyniki Ilosc wszystkich rekordow:6359961 Co ile:20000 Ilosc przetworzonych rekordow:318 Czas 7.14381098747 Wnioski: no chyba nie musze mowic.... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) @maly_swd jesli naprawde myslales o innym rozwiązaniu to prosze podaj je dokladnie. Jesli jednak nie, to moze wkoncu przyjmiesz fakty do wiadomosci. edit: a, i jeszcze wyniki moich wczesniej podanych skryptow dla tej samej tabeli z 6 mln rekordow czas dla select count(*): 0.00517010688782 czas dla mysql_num_rows: 6.46986794472 no comments.... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 16:29 |