用于存储用户访问量的最佳数据库模型是什么,并且在具有1.000.000行的大型数据库中使用IP对唯一用户进行计数?
SELECT COUNT(DISTINCT ip) FROM visits
但是对于1.000.000不同的ip,它可能是一个缓慢的查询。缓存不会返回实数。
大型统计系统对独立访问的重要程度如何?
答案 0 :(得分:2)
不要使用关系数据库。它不是为存储这类信息而设计的。
你可以试试NoSQL 数据库,例如Mongo(我知道有很多地方用它来记录它们,因为它的开销很小)。
如果你必须坚持使用MySQL,你可以在ip
列添加一个索引,这应该可以显着提高速度......
答案 1 :(得分:2)
让另一个MyISAM表只包含IP列和UNIQUE索引。您将立即获得正确的计数(MyISAM缓存表中的行数)
[评论后补充]
如果您还需要计算每个IP的访问次数,请再添加一列visitCount
并使用
INSERT INTO
visitCounter (IP,visitCount)
VALUES
(INET_ATON($ip),1)
ON DUPLICATE KEY UPDATE
SET visitCount = visitCount+1