Система статистики PHP и MySQL - PullRequest
3 голосов
/ 17 августа 2010

Какова лучшая модель базы данных для хранения посещений пользователей и подсчета уникальных пользователей, использующих IP в большой базе данных, например, с 1.000.000 строк?

SELECT COUNT(DISTINCT ip) FROM visits

Но с 1.000.000 разных ip это может быть медленный запрос. Кеширование не вернет действительное число.

Насколько большая система статистики учитывает уникальные посещения?

Ответы [ 2 ]

2 голосов
/ 18 августа 2010

Иметь другую таблицу MyISAM, в которой есть только столбец IP и уникальный индекс. Вы получите правильный счет в кратчайшие сроки (MyISAM кэширует количество строк в таблице)

[добавлено после комментариев]

Если вам также необходимо подсчитать посещения с каждого IP, добавьте еще один столбец visitCount и используйте

INSERT INTO 
  visitCounter (IP,visitCount) 
VALUES 
  (INET_ATON($ip),1) 
ON DUPLICATE KEY UPDATE 
  SET visitCount = visitCount+1
2 голосов
/ 18 августа 2010

Не используйте для этого реляционную базу данных. Он не предназначен для хранения информации такого типа.

Вы можете попробовать базу данных NoSQL , такую ​​как Mongo (я знаю, что во многих местах это используется для регистрации, так как она требует очень мало времени).

Если вам нужно придерживаться MySQL, вы можете добавить индекс к столбцу ip, который должен значительно ускорить процесс ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...