[发明专利]基于MySQL计数器表的高并发计数方法及web服务器有效
申请号: | 201711225004.X | 申请日: | 2017-11-29 |
公开(公告)号: | CN107862082B | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 郑秋燕 | 申请(专利权)人: | 努比亚技术有限公司 |
主分类号: | G06F16/25 | 分类号: | G06F16/25;G06F16/958;G06F9/54 |
代理公司: | 深圳市凯达知识产权事务所 44256 | 代理人: | 刘大弯;沈荣彬 |
地址: | 518057 广东省深圳市南山区高新区北环大道9018*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 mysql 计数器 并发 计数 方法 web 服务器 | ||
本发明公开了一种基于MySQL计数器表的高并发计数方法,包括步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将计数事件存储至消息队列;开启与槽位数量相同的多个计数线程以使各计数线程从消息队列中读取计数事件、从预设栈中读取槽位值、将计数事件更新至槽位值、将已进行计数的计数事件从消息队列中删除并将更新后的槽位值返回预设栈。与现有技术相比,本发明通过消息队列实现了将web应用计数操作与MySQL计数器的计数操作进行解耦,通过设置多个槽位来对同一时刻的大量计数事件进行并发的计数操作,其保证了MySQL计数器的计算操作不会发生阻塞,大大提高了高并发计数时的效率。
技术领域
本发明涉及web技术领域,尤其涉及一种基于MySQL计数器表的高并发计 数方法及web服务器。
背景技术
MySQL计数器表在Web应用中很常见,比如:需要统计用户对网站的点击 次数、文件下载数以及网站的新增用户数等等,都需要用到计数器。通常, Web开发者会将计数相关的数据单独创建一张表,这样可以使得计数器表小而 快,但是MySQL中对于这条记录的计数器的行更新操作,会有一个行级的事 务,即这条记录会有一个全局的互斥锁。在同一时候,只能有一个进程(或 线程)对该条记录进行更新,因此,在高并发的情况下,计数器的更新操作 会变的很慢,导致进程(线程)阻塞,使得性能变低。
因此,有必要提供一种基于MySQL计数器表的高并发计数方法及web服务 器来解决上述技术问题。
发明内容
本发明的主要目的在于提出一种基于MySQL计数器表的高并发计数方法 及web服务器,旨在解决现有技术中利用MySQL计数器表进行计数时无法进 行并发计数、导致计数器容易阻塞、计数性能低的技术问题。
首先,为实现上述目的,本发明提供一种基于MySQL计数器表的高并发 计数方法,应用于web服务器,所述基于MySQL计数器表的高并发计数方法 包括以下步骤:
在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入 预设栈;
实时检测是否发生计数事件;
若检测到计数事件,将所述计数事件存储至消息队列;
开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消 息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数 事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删 除并将更新后的所述槽位值返回所述预设栈。
可选地,所述基于MySQL计数器表的高并发计数方法还包括:
统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的 槽位值;
将各所述槽位值相加并将相加后的和值作为当前计数结果。
可选地,所述MySQL计数器表中还设置有日期;
所述统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对 应的槽位值的步骤具体为:
获取当前日期;
根据所述当前日期从对应日期的MySQL计数器表中读取各所述槽位对应 的槽位值。
可选地,所述开启与所述槽位数量相同的多个计数线程以使所述计数线 程从所述预设栈中取出所述槽位值的步骤之后还包括:
检测所述预设栈是否为空;
若检测结果为是,则将所述计数线程从所述消息队列中取出的计数事件 再次存储至所述消息队列;
若检测结果为否,则执行所述从所述预设栈中读取所述槽位值的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于努比亚技术有限公司,未经努比亚技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711225004.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:网络信息源查找方法、装置及服务器
- 下一篇:一种扫描文件快速归档的方法