保持计数器统计数据的最佳做法?

mun*_*nch 2 mysql statistics nosql

为了在我的网站上为用户添加统计信息和跟踪,我一直在考虑保留网页浏览量和其他频繁发生事件的最佳方法.现在,我的网站显然不是Facebook的大小,以保证他们实施的一些策略(例如,甚至不需要分片),但我想避免任何明显愚蠢的错误.

似乎最简单的跟踪方法是在表中只有一个整数列.例如,每个页面都有一个页面视图列,每个页面视图只会增加1.如果人们以比数据库写的速度更快的速度访问页面,这似乎是一个问题.

例如,如果两个人同时点击该页面,那么在previous_pageview两次更新之前计数将是相同的,并且每次更新都会将其更新为previous_pageview+1而不是+2.但是,假设数据库写入速度为10毫秒(我相信这非常高),您需要每秒一百页的浏览量,或者每天数百万的综合浏览量.

那么,对我来说只是增加一个列是没关系的吗?确切的数字不是太重要,所以这里有一些错误是可以容忍的.如果同一行有很多列,那么一列上的更新语句是否会变慢?(我的猜测是否定的.)

我有这个计划使用一个单独的No-SQL数据库来存储pk_[stat]->value每个stat的对,快速递增,然后运行一个cron作业来定期更新MySQL值.这感觉有点矫枉过正; 有人请向我保证,确实如此.

Eli*_*Eli 6

UPDATE foo SET counter = counter + 1是原子的.即使两个人在同一时间点击,它也会按预期工作.