比如用户登录到会员中心后,会有一个简单的统计系统,这个投稿量和照片数量是直接建一个表,然后每次发布文章或者上传照片的时候都update table set photo=photo+1 where uid=1 还是每次都select count(*) 一下好呢?
select count(*), 然后缓存
select count(*)
用户中心访问量也不高,效率上讲哪区别不大。 我个人习惯于使用单独的统计表,不想让数据库承担逻辑上的东西,使用+1方式,单独建个表,以后增加其他它信息的统计也方便些,这么做要保证数据一致性,防止用户新增了投稿,但是统计表却更新失败,最好给数据库加个定期事务。 如果用count(*),记得把*换成主键名。
+1
count(*)
*
更科学的方式是在缓存层面储存计数, 例如用redis,然后定期永久化。
第一种方案的路过一下。 然后每周会有一次的数据更新。防止冗余数据的异常出现的统计错误。
select count(*)
, 然后缓存用户中心访问量也不高,效率上讲哪区别不大。
我个人习惯于使用单独的统计表,不想让数据库承担逻辑上的东西,使用
+1
方式,单独建个表,以后增加其他它信息的统计也方便些,这么做要保证数据一致性,防止用户新增了投稿,但是统计表却更新失败,最好给数据库加个定期事务。如果用
count(*)
,记得把*
换成主键名。更科学的方式是在缓存层面储存计数, 例如用redis,然后定期永久化。
第一种方案的路过一下。
然后每周会有一次的数据更新。防止冗余数据的异常出现的统计错误。