嗨,大家好,我需要您的意见。我处于需要使用ajax的情况,所以我需要每30秒查询一次用户信息.....哪个更有效率的查询服务器(比如check首先是一个文本文件),如果有用户信息的更新,则可以进行完整的数据库查询或直接每30秒直接查询数据库。请说明您的推理,以便我可以衡量我的决定...... 。提前致谢。服务器或数据库
服务器或数据库
回答
取决于您拥有的用户数量,但做一些轮询将不可能扩展。
你应该看看comet体系结构。您应该编写一些中间件,只在需要时才会与数据库进行交互,并在内存或平面文件中执行大部分操作。中间件会在你的前端(web服务器)和实际的后端(数据库)之间进行一些缓存。
我建议你也查看memcachedb(或任何键/值DB engine)来编码你的中间件。
如果你没有太多的用户可以保留一些轮询方案。
我想在Web服务器上缓存,使用寿命为30秒,并拉取所有用户数据以减少往返数据库的次数。我也有客户端使用Web缓存,而不是去数据库。
它是最小增益很大的开销,否则
如果您有少数用户和少量的网络客户端,然后实现最简单的解决办法。
推理:除非您遇到严重的性能问题,否则不需要优化此类内容。我开始思考这个当:
- 有成千上万的用户在DB
- 此信息是查询每秒数百个Web客户端
,但如果你有10个用户,那么这可能意味着每10秒需要10个网页浏览器询问这些信息。你应该担心你的服务器,因为这将是无聊死了穷人CPU;)
+1 for KISS ..... – 2009-11-12 09:29:46
我会措施第一如果简单版本(好像查询数据库直接第一)不是足够好。
然后,如果这样做不够好,寻找更好的解决方案(仍然是测量结果)。
有很多ifs和取决于远程给你很好的建议。
不知道我看到需要缓存,但也许我很天真? Cache如何知道数据是否已更改?
SELECT ... lots of columns FROM MyTable WHERE UserID = 1234 AND LastUpdated > @MyLastUpdated
只有在AND为真时才会做任何认真的工作?如果返回零行,它没有改变 - 或者UserID = 1234不再存在,但是如果你需要知道查询可以改变也可以返回)。因此,我不认为它有必要执行“自@MyLastUpdated以来更改过的用户ID = 1234”查询,然后是完整的SELECT *。
如果您在列列表中检索LastUpdated的值,请存储该值,然后在下次检查UserID = 1234是否发生更改时将其作为参数提供。
(LASTUPDATED是不是你最后一次检查的时间,但该记录的最后更新,很明显,但它确实需要由相同的时钟每一次创建的时间上课的SQL框本身(而不是客户端的PC !!),并考虑到秋季夏令时发生的情况。)
- 1. Advantage数据库或SQL服务器
- 2. 虚拟化数据库服务器或Web服务器?
- 3. Sql数据库服务器
- 4. 从服务器MySql数据库更新本地服务器MySql数据库
- 5. Redis在Web服务器前端或数据库服务器后端
- 6. 如何数据库表从一个数据库服务器复制到另一台数据库服务器
- 7. 向远程数据库服务器发送数据和从远程数据库服务器发送数据
- 8. Architeture Web服务器,应用服务器和数据库服务器
- 9. 从服务器A复制MongoDB数据库到服务器B
- 10. 亚马逊扩展Web服务器的数据库服务器
- 11. 用于(游戏)服务器通信的Web服务或共享数据库?
- 12. 检查服务器上字数据库的密码或使用Web服务?
- 13. 保存图像数据库或服务器目录
- 14. 将SQL服务器数据库导入到HDFS或HIVE
- 15. 使用Google Web Toolkit或JQuery的服务器端SQLite数据库
- 16. SQL-Azure性能,添加数据库或添加服务器?
- 17. 处理服务器端或程序中的数据库关系
- 18. 服务器日志记录 - 在数据库或日志文件?
- 19. 如何确定是否存在SQL服务器或数据库
- 20. Amazon AWS或专用服务器上的数据库
- 21. Web服务器和数据库服务器之间的安全数据传输
- 22. Amazon-RDS数据库专用服务器
- 23. 编码数据库和服务器
- 24. MySQL数据库服务器v.s. Phpmyadmin
- 25. SQL服务器数据库表性能
- 26. 更改数据库服务器
- 27. 服务器和数据库查询
- 28. 服务器在这里disconneting数据库
- 29. 测试服务器查询/数据库
- 30. iPhone:从MySQL数据库服务器上
+1 for Conditional GET – Piskvor 2009-11-12 09:15:05