论坛首页 Java企业应用论坛

投票系统性能问题

浏览 16061 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-03  
本人是一个网站的技术负责人,网站使用的数据库的Mysql5.0,开发语言是java。最近要开发一个问卷投票模块。如果直接插入数据库的话,那对数据库的操作会很频繁。毕竟从实际角度出发,投票系统对实时性要求很高。首先我考虑过用自己写程序做cache,在内存里面运算,定时将数据同步到数据库。但发现自己写程序维护成本比较高,而且同步开销大。后又在网上找了找,发现有内存数据库开源项目,同时又查了mysql的相关文档,mysql支持内存表引擎。目前还在研究中,希望有了解这块的朋友帮个忙,给些意见和看法。3Q。。。
   发表时间:2008-12-03  
数据库性能也不慢,不用太担心这个。你放内存里外一挂了。你惨了。
0 请登录后投票
   发表时间:2008-12-03  
mysql比较轻量级,应该能撑住
0 请登录后投票
   发表时间:2008-12-04  
但并发大的时候,会对数据库频繁操作,我昨天查阅了一下MYSQL资料,MYSQL支持memory(heap)引擎,准备做个测试,看memory引擎和Innodb的性能差异,理论上memory(heap)引擎是内存数据库。
0 请登录后投票
   发表时间:2008-12-04  
数据库都不够用。。。看来这网站也够大的了,那先保存在磁盘的文件里,
然后数据库一段时间后从磁盘上同步
0 请登录后投票
   发表时间:2008-12-04  
用memcache.
0 请登录后投票
   发表时间:2008-12-04  
如果是多个服务器, 用外部的CACHE会有同步问题的。
仅仅是用计数器么
0 请登录后投票
   发表时间:2008-12-04  
sdh5724 写道
如果是多个服务器, 用外部的CACHE会有同步问题的。
仅仅是用计数器么

可以这么说,比如一个选项,十个人投票,需要做十次update操作,如果是直接用操作数据库,数据库自己有行级锁,但如果投票人多的话,会对数据库操作非常频繁;如果用cache,在内存里面算,就需要自己做同步,但同步的开销也不小。
0 请登录后投票
   发表时间:2008-12-04  
madwind 写道
sdh5724 写道
如果是多个服务器, 用外部的CACHE会有同步问题的。
仅仅是用计数器么

可以这么说,比如一个选项,十个人投票,需要做十次update操作,如果是直接用操作数据库,数据库自己有行级锁,但如果投票人多的话,会对数据库操作非常频繁;如果用cache,在内存里面算,就需要自己做同步,但同步的开销也不小。

只用插入操作(每个投票都作为一条记录)
把这些放到内存表中去
每一段时间进行计算,
再写入主表中
0 请登录后投票
   发表时间:2008-12-04  
抛出异常的爱 写道
madwind 写道
sdh5724 写道
如果是多个服务器, 用外部的CACHE会有同步问题的。
仅仅是用计数器么

可以这么说,比如一个选项,十个人投票,需要做十次update操作,如果是直接用操作数据库,数据库自己有行级锁,但如果投票人多的话,会对数据库操作非常频繁;如果用cache,在内存里面算,就需要自己做同步,但同步的开销也不小。

只用插入操作(每个投票都作为一条记录)
把这些放到内存表中去
每一段时间进行计算,
再写入主表中

1、如果不用内存表,直接插数据库,数据库能否承受每秒100次的更新(而且还是带行级锁),mysql文档介绍Innodb引擎有每秒800次擦写的案例。
2、如果用内存表,用update还是插多行,因为投票讲究实时性,如果插多行,那投票数量得是主表+内存表的数量之和。
当然,这些都需要做详细的测试。。所以希望有经验的朋友贡献一下心得和经验。。。先感谢楼上的朋友。。。我的msn是duhuan_romantic@hotmail。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics