• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

高负载下,Mysql表的读写性能有关问题

mysql 搞代码 7年前 (2018-05-31) 147次浏览 已收录 0个评论

高负载下,mysql表的读写性能问题
客户要求在页面上实现广告内容的实时轮替,就是每刷新一次内容的不一样。我建了一个队列表来管理广告的显示顺序和次数。

每次页面刷新就从队列表读出当前的广告记录,然后将该记录删除。也就是说,每一次页面请求都会有一次数据查询读取和删除操作。现在网站还没开始推广,运行当然没问题。我担心以后如果访问量大了,我这种使用队列表的方案,性能会不会有问题?

请各位说说看法?多谢!

——解决方案——————–
如果用户多,会有问题。这也是为什么很多网站都会有限制两次刷新页面的时间。 比如csdn一分钟会才会去查询数据库。

建议使用静态页面,由你的后台定时(比如每小时,或每5分钟,生成这些广告的静态页面,比如 ad1.html, ad2.html, ad3.html, 这样客户端的脚本只是访问这些静态页面,不会造成访问数据的压力。
——解决方案——————–
思路与8楼上略有差别:
加个标示字段 flag,flag的初始值=你的第一条广告记录的id,每次去数据库取出,这个id的广告,和下一个广告的id,把下个广告的id存到flag中,如此循环,这样就不用再多建这个队列表了
——解决方案——————–

探讨

思路与8楼上略有差别:
加个标示字段 flag,flag的初始值=你的第一条广告记录的id,每次去数据库取出,这个id的广告,和下一个广告的id,把下个广告的id存到flag中,如此循环,这样就不用再多建这个队列表了

——解决方案——————–
这个做起来有些困难,你要分别针对每个客户来做不同的可以。
但是你要保证刷新的是不一样,有些困难。

大部分,都是根据权重来和时间进行搭配,设置好不同时间显示什么内容。
生成时间,用户,广告的关系表。

查询的时候根据当前时间,用户,提取出对应的广告!
——解决方案——————–

探讨

这个做起来有些困难,你要分别针对每个客户来做不同的可以。
但是你要保证刷新的是不一样,有些困难。

大部分,都是根据权重来和时间进行搭配,设置好不同时间显示什么内容。
生成时间,用户,广告的关系表。

查询的时候根据当前时间,用户,提取出对应的广告!

——解决方案——————–

探讨

2. 这个网站是php+apache+mysql架构, 没有类似application这样的公用全局变量。我在考虑用一个xml文件替代数据库中的队列表,这样可以大幅减少对数据库读写。只是我不是很清楚在访问量很大情况下,读写文件的效率会比读写数据库高很多吗?哪位来说说?

——解决方案——————–
这个不要全压给数据库。
广告这类业务,可以借助于中间的Cache层,如Memcached,有新的广告加入或删掉更新相应的Cache
每次出现不的值时,可以用程Rand出那个区间,然后在那个Cache里来取就行了。

如果你的数据库设计的合理,能够以HASH结构存放,也是不用担心的。

这个还是关建看你怎么分解你的业务了。
——解决方案——————–

楼主,你思路有点问题。其实楼主可以使用下面方法: 
1 在程序中缓存这些广告相关内容。
2 定时去读取数据库内容更新缓存中内容;这样数据库使用次数是可控的。
【广告最长生效时间为 间隔时间 + 1 】
3 广告内容最后就是弄好,放在一个服务器上让客户自己下载就可以了。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:高负载下,Mysql表的读写性能有关问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址