一个mysql数据库可以支持多少用户同时在线处理数据?

解决方案 »

  1.   

    如果把你这个问题看作一个数学应用题,那么它是一个缺少条件的应用题。最大支持用户数 = 系统中存在瓶颈的那种资源 / 每个用户所需要的资源数。很难说 CPU、内存、甚至磁盘IO或者网络哪一个在系统中处于瓶颈地位。这取决于你用数据库干什么。举几个极端的例子,如果你用数据库做非常复杂的查询,可能1个用户就消耗掉全部的CPU。另一个极端的例子是,你把整个电影视频都作为二进制数据放入数据库,那么可能几个用户就消耗掉全部的IO或者网络带宽。因此,这种没有实际使用情况的应用题无解。那么怎么样才能知道呢?很明显是通过性能分析工具和压力测试工具,它们通过模拟典型用户的典型操作对系统施加负荷,并且监视系统性能,从而模拟和估算出系统能够接受的最大用户数。另外,我需要让你明白的是,一个蹩脚的程序设计可能会大幅降低同时在线负载能力。比如没有优化的查询,再比如,一些耗费时间的操作未必要实时执行,可以放入队列,在后台利用系统空闲的时间处理。比如典型的,csdn只在每天半夜统计用户专家分的排名。
      

  2.   

    简单查询和复杂查询是你的主观判断。我们用程序打比方:while (true) { } // 程序1int i = 1;
    i++;
    i++;
    i++;
    i++; //程序2
    上面的2个程序,前者只有1行,运行时间是无穷长,因为是死循环。后者虽然有5行,但是只需要几纳秒就能运算出来。这说明简单不简单你观察不出来。回到数据库,我们看这样一个查询:
    select * from table
    你觉得它是简单查询么?如果 table 中有1000万条数据,它耗费的时间很恐怖。可能比运行另一个1000行的存储过程还要耗费时间。所以,你应该去学习标准的做法,而不是拒绝它们闭门造车去解决自己创造出来的问题。
      

  3.   

    再比如,一个稍微学习过数据库的人都知道。就算相同的查询,是否给匹配的字段加上索引,运行时间都是天壤之别。简单和复杂完全和性能无关。Windows复杂不复杂?它有几千万行源代码,但是可以轻松在PC上运行。一个圆周率计算程序可能只有几百KiloBytes,但是运行时间可能长达几天才能算出来。
      

  4.   

    感谢caozhy的讲解,我知道怎么回事了,我想要那个平局水平?
      

  5.   

    哈哈哈哈....caozhy 内牛满面!!!!不过,很好caozhy,喜欢你的这种答疑方式。
      

  6.   

    caozhy是个好人,做事认真,帮了我这个菜鸟不少忙,就是我太笨了,有时候说不清楚啊。