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%)
-----


Jesli masz dostep do crona to najlepszym pomyslem byloby generowanie statystyk wlasnie za jego pomoca powiedzmy raz na godzine (lub nawet rzadziej) a na stronie juz tylko wczytanie statycznego html'a, wiec bardzo szybka operacja.
Jak nie masz to mimo wszystko cachowalbym calego html'a, tylko teraz nie wiem jak masz ta aplikacje zbudowana.. jesli uzywasz szablonow to moze warto skorzystac z cachowania, ktore one udostepniaja ? W przeciwnym wypadku musialbys sam cos takiego napisac.
W wersji uproszczonej mogloby to wygladac tak, ze sprawdzasz czy pliki z cachem istnieja i sa niestarsze niz godzina. Jesli tak to nie trzeba nic generowac tylko je wczytac.. jesli nie to nastepuje ich generowanie i zapisanie do pliku z cachem.
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: 6.10.2025 - 21:47