The invention discloses a counting method comprises the steps of high concurrency, MySQL counter based on the table in the MySQL counter table is provided with a plurality of slots, and a plurality of slots a slot corresponding to the preset value stored in the stack; real time detect the occurrence of counting events; if the detected event count, counting events to storage message queue; open the slot and the same number of multiple threads so that each thread count count from the message queue read count events, from the default stack read slot value, counting event count event update to the slot value, will have to count the deleted from the message queue and the updated slot returns the default stack. Compared with the prior art, the invention realizes the message queue by counting operation web application and MySQL counting operation counter decoupling, counting the concurrent operation by setting multiple slots on the same time a large number of counting events, which ensures that the calculation operation will not MySQL counter congested, greatly improving the efficiency of high the concurrent counting.
【技术实现步骤摘要】
基于MySQL计数器表的高并发计数方法及web服务器
本专利技术涉及web
,尤其涉及一种基于MySQL计数器表的高并发计数方法及web服务器。
技术介绍
MySQL计数器表在Web应用中很常见,比如:需要统计用户对网站的点击次数、文件下载数以及网站的新增用户数等等,都需要用到计数器。通常,Web开发者会将计数相关的数据单独创建一张表,这样可以使得计数器表小而快,但是MySQL中对于这条记录的计数器的行更新操作,会有一个行级的事务,即这条记录会有一个全局的互斥锁。在同一时候,只能有一个进程(或线程)对该条记录进行更新,因此,在高并发的情况下,计数器的更新操作会变的很慢,导致进程(线程)阻塞,使得性能变低。因此,有必要提供一种基于MySQL计数器表的高并发计数方法及web服务器来解决上述技术问题。
技术实现思路
本专利技术的主要目的在于提出一种基于MySQL计数器表的高并发计数方法及web服务器,旨在解决现有技术中利用MySQL计数器表进行计数时无法进行并发计数、导致计数器容易阻塞、计数性能低的技术问题。首先,为实现上述目的,本专利技术提供一种基于MySQL计数器表的高并发计数方法,应用于web服务器,所述基于MySQL计数器表的高并发计数方法包括以下步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将所述计数事件存储至消息队列;开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进 ...
【技术保护点】
一种用于MySQL计数器表的高并发计数方法,应用于web服务器,其特征在于,所述基于MySQL计数器表的高并发计数方法包括以下步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将所述计数事件存储至消息队列;开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删除并将更新后的所述槽位值返回所述预设栈。
【技术特征摘要】
1.一种用于MySQL计数器表的高并发计数方法,应用于web服务器,其特征在于,所述基于MySQL计数器表的高并发计数方法包括以下步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将所述计数事件存储至消息队列;开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删除并将更新后的所述槽位值返回所述预设栈。2.如权利要求1所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述基于MySQL计数器表的高并发计数方法还包括:统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的槽位值;将各所述槽位值相加并将相加后的和值作为当前计数结果。3.如权利要求2所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述MySQL计数器表中还设置有日期;所述统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的槽位值的步骤具体为:获取当前日期;根据所述当前日期从对应日期的MySQL计数器表中读取各所述槽位对应的槽位值。4.如权利要求2所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述开启与所述槽位数量相同的多个计数线程以使所述计数线程从所述预设栈中取出所述槽位值的步骤之后还包括:检测所述预设栈是否为空;若检测结果为是,则将所述计数线程从所述消息队列中取出的计数事件再次存储至所述消息队列;若检测结果为否,则执行所述从所述预设栈中读取所述槽位值的步骤。5.如权利要求1所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述将所述计数事件存储至消息队列的步骤具体为:将所述计数事件并发存储至所述消息队列。6.一种web服务器,其特征在于,所述web服务器包括存储器、处理器及存储在所述存储器上并可在所述处...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。