Альтернативы для отслеживания запросов строк таблицы, чем строка «count» - PullRequest
0 голосов
/ 15 июня 2011

Мне нужно отслеживать количество запросов каждой строки в таблице.Мне нужно сделать это для многих таблиц.

Одна идея - это столбец "search_count"

id  | other data ...  | search_count
 1  |      ...        |       12
 2  |      ...        |       90

Есть ли более эффективный способ сделать это, чем иметь столбец "search count"?Я знаю, что это сработало бы, но это дало мне плохой «запах кода», потому что мне пришлось бы делать обновление после каждого запроса (или триггера?).Мы будем максимально использовать Piwik или Google Analytics, но они не будут абсолютно точными, потому что у нас есть больше, чем просто веб-сервер, взаимодействующий с базой данных.

Эта база данных - MySQL 5.x

Спасибо

1 Ответ

1 голос
/ 15 июня 2011

Делая это в БД на лету, вы получите слишком много мертвых строк ...

Отследите это, используя memcache->increment на вашем любимом языке.Это атомно.И используйте cron для хранения результатов ежедневно или ежечасно.

Псевдокод для подсчета:

$ns = $memcache->get('count_ns');
$memcache->increment("count-$ns-$table-$id");

On 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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...