高性能mysql之统计表

在系统架设过程中,可能会遇到这样的需求:统计系统的使用次数。

可以放在一个数据表中做统计,比如

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



----------------------------------------魂歌------------------------------------------

对于大数据,要考虑这种优化情况。

你可能感兴趣的:(mysql,优化,数据库,table,Random)