;

问答宝宝】提问: 【小教学】案例预览为什么会弹出“数据库请求过于频繁”的提示?


2 个回答

问答宝宝

“数据库请求过于频繁”,原因是因为案例对数据库的请求(比如数据库提交,数据库输出,数据库更新等)的频率过高,当超过每秒10次的频率时,就会弹出这个提示。


由于案例对数据库的请求,需要等待服务器响应,如果请求过于频繁,会造成案例卡顿,所以工具对这种过于频繁的请求做了提示。


在正常的情况下,我们对数据库的请求频率不需要很高,一般只有在必要的时候去提交或者输出。如果达到每秒10次的频率,都是事件设置的问题造成的。


这里,我们举两个大家经常容易犯的错误,会导致请求过于频繁。


第一种错误:投票案例,不断通过数据库的统计数目来显示票数


投票的正确的做法,(无论是使用数据单元,还是静态设计的候选人),都是用两个数据库,一个记录流水,一个记录总票数。流水提交成功,让票数更新,相应候选人票数加1 。这样,我们直接输出总票数的数据库,即可显示候选人票数,而不需要每次都去统计数目。


特别是当我们的候选人很多,比如60个,我们如果要在舞台初始化去统计60个候选人的票数,使用统计数目的方法,就会触发这个“数据库请求过于频繁”事件,因为我们一次性发了60个“统计数目”的请求。相反,如果我们使用正确的做法,只需要初始化对总数数据库进行一次输出即可,就只有一个请求,就不会弹错。


各种投票的做法,可以在问答平台上搜“投票”。这里贴几个教学:

http://help.ih5.cn/question/356.html

http://help.ih5.cn/question/358.html

http://help.ih5.cn/question/377.html


第二种错误:通过一个触发器不断实时更新投票或点赞数


有时候大家可能需要实时的显示票数或赞数,比如大家打开一个投票案例,当别的用户投了之后,我这个案例的票数可以实时更新。或者是大屏幕实时显示现场投票的情况。


一种常见的错误是用一个触发器,0.1秒或每帧,去进行数据库输出或统计。这样确实可以达到实时更新的方法,但是是一种非常笨的办法,而且会由于请求过于频繁,而弹出错误弹框。


标准的解决方法是使用连接,当有用户投票或点赞成功后,让连接发送公开消息;连接收到相应公开消息,再去进行数据库的输出。这样的好处是,只有票数真的更新后,我们才去输出最新票数,不会像之前触发器那样,每时每刻去询问数据是否更新。


详情请参考这个实时更新投票的做法:http://help.ih5.cn/question/357.html 




Chris

学习地图