社区
MySQL
帖子详情
高负载下,Mysql表的读写性能问题
delphi_compiler
2009-04-11 10:41:45
客户要求在页面上实现广告内容的实时轮替,就是每刷新一次内容的不一样。我建了一个队列表来管理广告的显示顺序和次数。
每次页面刷新就从队列表读出当前的广告记录,然后将该记录删除。也就是说,每一次页面请求都会有一次数据查询读取和删除操作。现在网站还没开始推广,运行当然没问题。我担心以后如果访问量大了,我这种使用队列表的方案,性能会不会有问题?
请各位说说看法?多谢!
...全文
266
31
打赏
收藏
高负载下,Mysql表的读写性能问题
客户要求在页面上实现广告内容的实时轮替,就是每刷新一次内容的不一样。我建了一个队列表来管理广告的显示顺序和次数。 每次页面刷新就从队列表读出当前的广告记录,然后将该记录删除。也就是说,每一次页面请求都会有一次数据查询读取和删除操作。现在网站还没开始推广,运行当然没问题。我担心以后如果访问量大了,我这种使用队列表的方案,性能会不会有问题? 请各位说说看法?多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
delphi_compiler
2009-04-16
打赏
举报
回复
多谢大家赐教,结贴!
phoenix_pj
2009-04-15
打赏
举报
回复
这个实时性不必那么强求,google也会有1分钟左右的延时
phoenix_pj
2009-04-15
打赏
举报
回复
[Quote=引用 9 楼 phoenix_pj 的回复:]
思路与8楼上略有差别:
加个标示字段 flag,flag的初始值=你的第一条广告记录的id,每次去数据库取出,这个id的广告,和下一个广告的id,把下个广告的id存到flag中,如此循环,这样就不用再多建这个队列表了
[/Quote]
如果觉得这样与数据库交互太频繁,那就一次从数据库取出之后要显示的n个广告,放在内存中,至于这个n为几,那就要看楼主的需求了,如果需求中对实时性要求高些,那就少取一些,如果对效率要求更严格那就多取几个
stareman
2009-04-15
打赏
举报
回复
关注...
ljf_ljf
2009-04-15
打赏
举报
回复
楼主,你思路有点问题。其实楼主可以使用下面方法:
1 在程序中缓存这些广告相关内容。
2 定时去读取数据库内容更新缓存中内容;这样数据库使用次数是可控的。
【广告最长生效时间为 间隔时间 + 1 】
3 广告内容最后就是弄好,放在一个服务器上让客户自己下载就可以了。
delphi_compiler
2009-04-15
打赏
举报
回复
up
wu_bx
2009-04-14
打赏
举报
回复
这个不要全压给数据库。
广告这类业务,可以借助于中间的Cache层,如Memcached,有新的广告加入或删掉更新相应的Cache
每次出现不的值时,可以用程Rand出那个区间,然后在那个Cache里来取就行了。
如果你的数据库设计的合理,能够以HASH结构存放,也是不用担心的。
这个还是关建看你怎么分解你的业务了。
WWWWA
2009-04-14
打赏
举报
回复
一般不推荐用内存表,除非你的内存足够大
delphi_compiler
2009-04-14
打赏
举报
回复
又查了下资料,好像对于高性能数据读写的需求,mysql的内存表比较适用?那个队列表其实就是临时表的性质,应该可以建成内存表。大家觉得怎么样?
懒得去死
2009-04-13
打赏
举报
回复
实时的对数据库读取显然是不可取的。
这个时候你要做的就是CACHE数据,当然这个更新CACHE里面陈旧数据的时间你要自己权衡。
ACMAIN_CHM
2009-04-13
打赏
举报
回复
[Quote=引用 13 楼 taoistong 的回复:]
这个做起来有些困难,你要分别针对每个客户来做不同的可以。
但是你要保证刷新的是不一样,有些困难。
大部分,都是根据权重来和时间进行搭配,设置好不同时间显示什么内容。
生成时间,用户,广告的关系表。
查询的时候根据当前时间,用户,提取出对应的广告!
[/Quote]
1。当广告客户完成广告申请的提交,广告数据插入/更新到数据中。
2。在insert/update你的程序中,直接生成相对应的HTML代码保存为广告表主键对应的html文件。假设你广告主键为数字。则你的服务器上对应目录中有 1.html,2.html
3。当普通用户通过浏览器访问时,你可以通过自定一个函数来响应普通用户的请求,随机调出一个 nnn.htm 广告页。 对各广告的权重,你可以直接在application级放一个权重数组。每三个小时重新访问数据库对这个数组刷新。
taoistong
2009-04-13
打赏
举报
回复
这个效率不低的,完全的查询操作!
taoistong
2009-04-13
打赏
举报
回复
这个做起来有些困难,你要分别针对每个客户来做不同的可以。
但是你要保证刷新的是不一样,有些困难。
大部分,都是根据权重来和时间进行搭配,设置好不同时间显示什么内容。
生成时间,用户,广告的关系表。
查询的时候根据当前时间,用户,提取出对应的广告!
wwwwb
2009-04-13
打赏
举报
回复
还有一种思路:就是将要显示的数据COPY到客户端,从客户端读取内容,
在服务器表中FLAG置为0
ACMAIN_CHM
2009-04-13
打赏
举报
回复
[Quote=引用 9 楼 phoenix_pj 的回复:]
思路与8楼上略有差别:
加个标示字段 flag,flag的初始值=你的第一条广告记录的id,每次去数据库取出,这个id的广告,和下一个广告的id,把下个广告的id存到flag中,如此循环,这样就不用再多建这个队列表了
[/Quote]
这种方案,还是会造成很多数据库访问啊。 如果是想减轻数据库访问,则建议把这些HTML码生成到文件,然后client的脚本直接去取下一个 xxxx.html 放入到某个广告的iframe中。
wwwwb
2009-04-13
打赏
举报
回复
楼主应该说明 一下队列表是什么结构,有什么字段,索引如何?怎么
取广告的ID,以便优化,楼上的方法不错,不知道是否有可行性
phoenix_pj
2009-04-13
打赏
举报
回复
思路与8楼上略有差别:
加个标示字段 flag,flag的初始值=你的第一条广告记录的id,每次去数据库取出,这个id的广告,和下一个广告的id,把下个广告的id存到flag中,如此循环,这样就不用再多建这个队列表了
wwwwb
2009-04-13
打赏
举报
回复
这样试试,增加一个字段,用做删除标志,显示完后,将此字段置为0,
查询时加入条件,删除标志<>0,定时运行删除 删除标志=0的记录。
ACMAIN_CHM
2009-04-13
打赏
举报
回复
[Quote=引用 18 楼 delphi_compiler 的回复:]
2. 这个网站是php+apache+mysql架构, 没有类似application这样的公用全局变量。我在考虑用一个xml文件替代数据库中的队列表,这样可以大幅减少对数据库读写。只是我不是很清楚在访问量很大情况下,读写文件的效率会比读写数据库高很多吗?哪位来说说?[/Quote]
不建议,访问XML文件,如果你是以文本格式访问,则效率并不高。如果以XML DOM来访问更慢。
WWWWA
2009-04-13
打赏
举报
回复
只是我不是很清楚在访问量很大情况下,读写文件的效率会比读写数据库高很多吗?
根据你的文件结构而定,数据库 有多人访问,而生成的文件访问的人数只有一个,从理论上讲,访问的人少,读写速度要快一些
加载更多回复(10)
MaxScale 实现
MySQL
读写
分离与
负载
均衡
==================================== # MaxScale作用 配置好了
MySQL
的主从复制结构后,能够实现
读写
分离,把读操作分散到slave服务器中,并且对多个slave服务器能实现
负载
均衡(本节演示暂时不包括:
高
可用 HA)。...
【
MySQL
8入门到精通】
高
可用-
MySQL
Router
读写
分离&
负载
均衡
本文详细阐述了
MySQL
1主2从实现
读写
分离&
负载
均衡的
高
可用搭建
mysql
构建主从结构,
mysql
负载
均衡和
读写
分离
mysql
构建主从结构,
mysql
读写
分离一、修改
mysql
配置二、配置
mysql
主从连接1. 主
mysql
数据库操作2. 主
mysql
数据库操作三、出现的一些
问题
1. 重启主库后,从库数据不跟着同步了。2. 无法连接主库。3. 遇到其他不明...
使用
MySQL
Router实现
高
可用、
负载
均衡、
读写
分离
四、
负载
均衡 五、
读写
分离 六、多实例 1. 环境 2. 配置文件 3. 功能测试 参考: 一、
MySQL
Router简介
MySQL
Router是
MySQL
官方提供的一个轻量级中间件,可以在应用程序与
MySQL
服务器之间提供透明的路由...
【
mysql
】-
mysql
读写
分离后
性能
到底能提
高
多少(实测)
尽人皆知,
Mysql
通过
读写
分离分库分
表
后
性能
会有提升,那么如果仅配置主从复制,
读写
分离到底能提升多少呢? 网上逛了一圈也没有找到什么可以参考的数据,还是实践出真知,自己实际测一番便可知晓. 环境描述: 项目我...
MySQL
56,687
社区成员
56,710
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章