Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja tabeli, zapytania do tabeli z rekordami 560000
yaaa
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.10.2005

Ostrzeżenie: (0%)
-----


Witam wszystkich,

Troszke pogrzebałem po formu ale nie znalazłem nic ciekawego w tym temacie (z góry proszę jak ktoś znalazł coś podobnego p podanie linka).
Mój problem jest taki: pracuję od niedawna dla pewnej firmy, która prowadzi portal i wszystko by było ładnie gdyby nie jedna rzecz. Wszelkie dane z portalu są logowane do jednej tabeli ma on już 560 tyś rekordów (ciągle rośnie) i na niej oparte są wszelkie statystyki, które codzeinnie czyta mój szef. Szef musi mieć wszystko na wczoraj wiec jak wykonanie pewnego zapytania trwa np 40 sek i jeszcze przekroczy ttl przeglądarki i nic mu nie wyświetli to się denerwuje.
Ja mam pomysł żeby rozbić to wszysko na lata tzn. log_2004, log_2005, log_2006 itd.
wtedy tabele były by dużo mniejsze i zapytania dla poszczególnych lat trwały by krócej tylko, że zapytanie o wszystkie lata znów by było strasznie długie
Oto struktura tabeli:
  1. CREATE TABLE `wyn_log` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  4. `addr` varchar(15) NOT NULL DEFAULT '',
  5. `session_nr` int(11) NOT NULL DEFAULT '0',
  6. `partner` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  7. `user_id` int(11) NOT NULL DEFAULT '0',
  8. `fv` varchar(5) NOT NULL DEFAULT '',
  9. `page` varchar(50) NOT NULL DEFAULT '',
  10. `description` text NOT NULL,
  11. PRIMARY KEY (`id`),
  12. KEY `session_nr_idx` (`session_nr`),
  13. KEY `description` (`description`(255)),
  14. KEY `page_idx` (`page`),
  15. KEY `date_idx` (`date`),
  16. KEY `description_idx` (`description`(255))
  17. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 COMMENT='do logowania najwazniejszych zdarzen w systemie' AUTO_INCREMENT=5057416 ;


Z góry dzięki za każdy pomysł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Cytat(yaaa @ 2006-01-10 10:54:09)
Tylko że ja mam takich zapytań kilkadzieiąt lub nawet kilkaset, bo jak wspomniałem wszelkie statystyki są oparte na tej tabeli a nowe ciagle przybywaja. Szef co dziennie chce miec mozliwosc inwigilowania czegos nowego i te zaptanie staja sie coraz to bardziej skomplikowane

To w koncu jedno zapytanie wykonuje sie ~40 sekund czy caly zestaw zapytan generujacych statystyki ? Jesli to pierwsze to raczej jest wina tego konkretnego zapytania.. ale mam przeczucie, ze chodzi o to drugie, zatem na jedno zapytanie przypada juz ulamek sekundy, co jest sensowna wartoscia.
Podobnie jak poprzednik sugeruje jakas metode cache'owania. Ja w swoim obecnym projekcie mam statystyki, ktore sa generowane przez ok 20 zapytan, w sumie niecala sekunda.. a mimo to denerwowal mnie ten lekki przestoj i zdecydowalem sie na cache'owanie ich na godzine. Jesli masz dostep do cron'a to mozesz je generowac z jego poziomu, a na stronie wyswietlac juz statyczne dane, bedzie to chyba najlepsze rozwiazanie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 12:46