&引用;“缓冲写入方案”;对于使用php、mysql的视图计数器
我读了这个话题。我理解这个算法,但我不明白在mysql、php中是如何做到这一点的 每次注册一个新的命中,它也会被添加到内存缓冲区中,除了过期的缓存项。缓冲区本身也会在几分钟后或填充到一定大小后过期,以先发生的为准。当它过期时,它积累的所有内容都会批量写入数据库。他们称之为“缓冲写方案” 我们在mysql中使用存储引擎内存,或者在mysql、php中使用更好的解决方案 谁能告诉我如何用php、mysql为视图计数器提供“缓冲写入方案”&引用;“缓冲写入方案”;对于使用php、mysql的视图计数器,php,mysql,counter,Php,Mysql,Counter,我读了这个话题。我理解这个算法,但我不明白在mysql、php中是如何做到这一点的 每次注册一个新的命中,它也会被添加到内存缓冲区中,除了过期的缓存项。缓冲区本身也会在几分钟后或填充到一定大小后过期,以先发生的为准。当它过期时,它积累的所有内容都会批量写入数据库。他们称之为“缓冲写方案” 我们在mysql中使用存储引擎内存,或者在mysql、php中使用更好的解决方案 谁能告诉我如何用php、mysql为视图计数器提供“缓冲写入方案” 非常感谢。它不会比MySQL快 查询的存储过程可以加快处理速
非常感谢。它不会比MySQL快 查询的存储过程可以加快处理速度,但数据库设计是另一半 确保有一张桌子要数: 用户访问:
----------------------------
user_id | thread_id | count
----------------------------
确保在“user\u id”和“thread\u id”列上有索引或更好的两行唯一索引
当用户登录时,读取其整个线程id和计数值,并将它们保存在$\会话数组中
通过这种方式,您可以通过$\u SESSION var检查用户是否已经访问了该页面,如果用户已经访问了该页面,则只需忽略获取数据库,这将大大减少查询
然后不要忘记更新数据库,以防用户从未使用过此线程,还可以直接手动更新$\u会话数组
使用查询帮助程序:
在表(a,b,c)中插入值(1,2,3)、(4,5,6)
在重复密钥更新时,c=值(a)+值(b)
您可以简单地将insert into和update(无论需要什么)组合到一个查询中,从而提高性能
这样,只有当用户第一次进入线程时才会触发查询,而您别无选择,只能在某个地方写下来,而数据库是实现这一点的最快方法之一
只要您的thread\u id和user\u id字段被索引,您就可以非常快速地使用SELECT查询,即使表中有一百万行