日期:2014-05-18  浏览次数:20685 次

设计一个大用户量的login程序,看看大家有什么好的想法和建议。
比如说我一个系统有10万个用户,当用户登陆的时候,查询数据库校验用户对不对。
有什么方法查询数据库比较快?
查询结果放到哪里比较好?
不知道说没说明白,希望大家多给意见。

------解决方案--------------------
用hibernate吧
------解决方案--------------------
我觉的比较困难
帮你顶吧 顺便学习
------解决方案--------------------
hibernate 或许能改善查询速度 但是具体怎么做我也不清楚
session?

------解决方案--------------------
......
hibernate最大的弱点就是大批量的查询。他的缓存机制限制着这一点。还不如用JDBC用Sql语句直接查询。
------解决方案--------------------
要查询速度快,你的表要增加索引。我觉得你的数据库应该先做好优化。
------解决方案--------------------
10万个用户,这不叫大数据量!
就用最一般的方法设计,不要过于担心效率问题。
------解决方案--------------------
如果有百万条数据,就得考虑效率问题,我们来分析一下。
假设你的用户验证就是一个ID加上密码(或者密码的digest)
我们可以用一个SQL丢到服务器上执行:
select password from user where userid=?
返回的结果是一个密码或者没有,如果没有,说明ID出错,如果有密码返回,就比对密码(或者digest)
这个SQL非常简单,只要你在userid字段上加了索引,那么运行的效率非常非常高,无需考虑效率问题。

如果数据还要多(现在才可以称海量),可能你要想些技术上(软件上)的办法,而这些办法往往跟你系统的使用特性相关。
比如这些用户有这样的特点-虽然总数多,但经常登录的不多。那么可以把分成2个表,一个表是经常登录用户表,一个是不经常登录用户表。验证的时候先到经常表中,如果没有ID就到不经常表中再去验证。

只是举个例子而已,具体情况具体分析!
------解决方案--------------------
数据库表加索引.

王道.程序不要用隐射,直接取,应该有帮助.

做连接池.
------解决方案--------------------
建了索引基本就没问题了,记得千万别用hibernate,sql就可以了
------解决方案--------------------
现在人动不动就搬出hibernate
------解决方案--------------------
hbwhwang(【生病了,好好休息中...】) 说得非常对。

数据库本身已经采取了很多优化策略和机制,比如索引,在对建立了索引的字段进行条件查询时,因为已知记录内容都是有序的状态(无论正反),就会根据运算表达式来采用相应的最优化的查询方法,这些方法都是目前已知最优化的方法了,你再考虑别的算法都是多余。

hbwhwang(【生病了,好好休息中...】) 说的用户分组,也是一个重点。当数据只在一张表中,连索引都还慢的话,就必须根据适当的规律进行表的拆分。对于大量的用户来说,总有可以分群的条件,比如按国家、城市、职业、性别,或者是在此系统中扮演的角色(初级用户表、VIP表、管理员表)。
------解决方案--------------------
學習一下。。
------解决方案--------------------
mark