在系统架设过程中,可能会遇到这样的需求:统计系统的使用次数。
可以放在一个数据表中做统计,比如
create table counter ( counter int primary key )每次系统用户登陆的时候,counter+1,这看似是没什么问题。
但是,当用户量增大的是时候,多用户同时访问数据表,就会使这个表成为一个类似mutex的资源。用户只能串行访问【因为mysql在访问数据库的时候锁住了该行数据】。
解决办法如下:
create table counter2 ( id int primary key counter unsighed int )假设系统启用之处,在该表中存入100条 数据,分别是
1 0 2 0 3 0 4 0 5 0 6 0 ...那么每次用户登录更新这个统计表的时候,可以random的访问这100条中的任何一条,用以减少多用户造成的并行问题:
update counter set counter=counter+1 where id=random()%100当想统计总登陆次数的时候,sum一下就可以了。
select sum(counter) form counter
----------------------------------------魂歌------------------------------------------
对于大数据,要考虑这种优化情况。