我的想法是分开建表,学生选课放在一张表里,统计总人数放在另一张表里,通过建立触发器,当前一张表有数据插入则自动更新统计表里的选课总人数

解决方案 »

  1.   

    几千人同时在选课,数据库不慢的话,网络也会死掉.
      

  2.   

    几千人同时选择某一门课的几率太小,从某种程度上可以说用不着考虑这样的情况。
    如果真的要解决它,主要看你怎么构造数据访问层来提高运行效率,
    最好的情况是建立单用户持久连接,并对该记录更新情况分批提交,几千条这样的记录可瞬间完成,但是会不会给你的系统带来其它问题就不好说了,要求对该字段的实时性较低,更新的同时没有对该字段的其它操作,视情况而定。
    如果以上满足不了,就只能考虑别的情况,数据要求实时性高的话就只能更新后立即提交,不过性能会大大降低。
    =======================================================================================
    对某个记录特定字段的内容更新1000次:
    1.如果分为1000次提交,可能耗时15秒以上;
    2.如果1000次更新后,1次提交,可能耗时小于1秒。
    每一次更新提交都会带来内存空间(涉及数据回滚段)的分配与释放,第一种情况下会带来1000次分配和1000次资源释放问题;第二种情况下,可以这样理解,1000次更新只需一次分配,这1000次操作是对同一内存空间进行操作,就像编写程序时写的临时变量,而提交时也只需要一次资源释放花费。
    =======================================================================================
    顺便说一下二楼的,建立触发器会增加资源开销花费,比楼主直接写的性能还要低。
      

  3.   

    =======================================================================================
    对某个记录特定字段的内容更新1000次:
    1.如果分为1000次提交,可能耗时15秒以上;
    2.如果1000次更新后,1次提交,可能耗时小于1秒。
    每一次更新提交都会带来内存空间(涉及数据回滚段)的分配与释放,第一种情况下会带来1000次分配和1000次资源释放问题;第二种情况下,可以这样理解,1000次更新只需一次分配,这1000次操作是对同一内存空间进行操作,就像编写程序时写的临时变量,而提交时也只需要一次资源释放花费。
    =======================================================================================
    这段我喜欢,谢谢了。
      

  4.   

    不过,触发器在服务器端,对网络和服务器影响应该不会太大,既然是网上选课,就不可能会同时的在一个小时间段里提交1000笔数据,所以注定要每笔每笔的执行,按楼上讲的1000笔同时提交是不可能的事情了,还是要带来1000次分配和1000次资源释放...
         我觉得2楼的还行的通,我自己用过在近端跨网域Insert数据的时候(一个小时左右insert20W笔,这些数据是多台电脑上的多个excel上读取的,所以还有网络连接速度的影响),用触发器做统计,对速度影响和没有触发器的时候差的不算多...我是菜鸟,其他高手有什么高见,可以发表,大家学习....