mysql颠覆实战笔记(五)--商品系统设计(二):定时…
2018-06-17 22:50:43来源:未知 阅读 ()
继续回到沈老师的MYSQL颠覆实战,首先回顾下上一节课的内容,请大家会看下上节课写的存储过程。
打开prod_clicklog表, 我们只要把日期(不含时分秒)的部分存在数据库中, 如果同一日期有相同用户点击商品,那么我们对其数值+1,否则的话,这张点击日志表会过于庞大
下面我们将prod_clicklog表修改下:
将字段clickdate 修改为 date类型,增加clicknum字段,默认为1.
然后,我们把上一节课的存储过程sp_load_prod再修改一下:
BEGIN SELECT * FROM prod_main WHERE prod_id = _prod_id LIMIT 1; SET @num=FOUND_ROWS(); SET @c=0; IF @num=1 THEN #代表商品取出成功 SELECT count(*) INTO @c FROM prod_clicklog WHERE prod_id = _prod_id AND user_ip=_user_ip AND user_id=_userid AND clickdate=CURRENT_DATE; if @c>0 THEN #代表已经点击过,只要对clicknum累加1 UPDATE prod_clicklog SET clicknum=clicknum+1 WHERE prod_id=_prod_id AND user_ip=_user_ip AND user_id=_userid AND clickdate=CURRENT_DATE; ELSE #新增点击日志 INSERT INTO prod_clicklog(prod_id,user_ip,user_id,clickdate) VALUES (_prod_id,_user_ip,_user_id,CURRENT_DATE); END IF; END IF; END
接着我们还是新建查询,call一下 sp_load_prod(1);
prod_clicklog表中的数据:
然后我们多次执行上面的存储过程:
OK,这个思路没有任何问题。
这时问题来了。那么商品表中的总点击量,什么时候更新呢?
1、通过web语言来完成,譬如写个程序定时执行
2、本课时要讲的是通过mysql的事件来执行.
我们先执行下面的查询语句:
SELECT prod_id,sum(clicknum) FROM prod_clicklog GROUP BY prod_id;
这样就能取出一堆 id,和执行总条数
于是我们写个存储过程count_prod_click,来实现游标,
BEGIN DECLARE isend int DEFAULT 0; DECLARE pid int; #代表商品ID DECLARE cnum int; #代表点击量总数 DECLARE cur CURSOR FOR SELECT prod_id,sum(clicknum) from prod_clicklog GROUP BY prod_id; DECLARE CONTINUE HANDLER FOR NOT FOUND SET isend =1 ; #游标结束时令isend =1 open cur; #打开游标 FETCH cur into pid,cnum; #预先定义好的变量,取出第一行,并把内容放入预先定义好的变量 while isend !=1 DO UPDATE prod_main SET prod_click_all = cnum WHERE prod_id =pid; # 更新商品主表的总点击量 #这里可以写业务代码 FETCH cur into pid,cnum; end while; close cur; END
老规矩,我们新建查询
CALL count_prod_click;
然后刷新主表,可以看到,prod_click_all字段已经被更新
最终使用mysql新建一个事件,令每隔10秒统计一下并更新
我们先查询下mysql事件是否开启
show VARIABLES like '%event%'
如果没有开启:
SET GLOBAL event_scheduler=ON;
OK,现在我们新建一个事件 event_count_prodclick:
然后我们根据这个延时加载在实战中合理应用。
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享。但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的《web级mysql颠覆实战课程 》。如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址。
上一课:mysql颠覆实战笔记(四)--商品系统设计(一):商品主表设计
下一课:mysql颠覆实战笔记(六)--商品系统设计(三):商品属性设计之固定属性
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:mysql数据库的简单操作
下一篇:将mysql的查询结果输出到文件
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash