Musím sledovať počet dopytov na každý riadok v tabuľke. Musím to urobiť na mnohých tabuľkách.
Jedným z nápadov je stĺpec „search_count“
id | other data ... | search_count
1 | ... | 12
2 | ... | 90
Existuje efektívnejší spôsob, ako to urobiťMáte stĺpec „počet vyhľadávaní“? Viem, že by to fungovalo, ale bolo by to pre mňa nepríjemné „zápachu kódu“, pretože by som musel vykonať aktualizáciu po každom dotaze (Alebo spúšťač?). Používame Piwik alebo Google Analytics v maximálnej možnej miere, ale neboli by úplne presné, pretože k databáze pristupuje viac ako len webový server.
Táto databáza je MySQL 5.x
Vďaka
odpovede:
1 pre odpoveď č. 1Ak to urobíte v DB za behu, vygeneruje sa príliš veľa mŕtvych riadkov ...
Sledovať pomocou memcache->increment
vo vašom obľúbenom jazyku. Je atómová. A pomocou cronu môžete ukladať výsledky každý deň alebo každú hodinu.
Pseudokód, ktorý sa má počítať:
$ns = $memcache->get("count_ns");
$memcache->increment("count-$ns-$table-$id");
Na cron:
$ns = $memcache->get("count_ns");
sleep(1); // allow processes to finish
$memcache->increment("count_ns");
while ($row = $rows->next()) {
if ($count = $memcache->get("count-$ns-$table-$id") {
// increment count
}
}