是用什么开发的?.net 有缓存机制!开始启动的时候,是比较慢一些....

解决方案 »

  1.   

    刚才分析出来了,大家看看说得是不是有道理:
    关于“今日访问量”库表设计的探讨 近日发现一个网站系统的主页上有个奇怪的现象,用户进入主页时候会等待30多秒,然后再重新进入又开始快了,这种问题是偶尔发生的,而不是有规律的;
    经过查看程序代码,发现主页里有一个update命令,表结构如下:
    日期       今日总次数
    20010101    2次
    20010102    3次
    …………..从如上的表结构和程序里的update语句可以分析出来如下结论:
    例如今天是20010102
    如果100个用户同时访问主页,就都要将表里的20010102这条记录修改,
    Update语句可以理解为以下几个步骤:
    1定位20010102这条记录,
    2为20010102加锁
    3将20010102老记录放入deleteed表里,同时删除原表这条记录;
    4,将inserted表里的记录插入进来;
    5,释放锁;所以说,数据库接收这100个update命令是顺序执行的,
    假设这个update需要0.2秒,那么第100个人就需要等待0.2*99大概19秒,
    这对于一个主页来说是不能让人接受的;所以我们必须采用如下的表结构:
    一,今日访问记录表
    Id  日期
    1  20010102
    1  20010102
    1  20010102
    1  20010102
    …………二,总访问记录表
    日期  次数
    20010101    2次
    20010102    3次在编写程序的时候是不会用到update语句的,用户只往” 今日访问记录表”里插入记录,这不会造成等待的;
    插入的时候做个判断,看” 今日访问记录表”里时间不等于今天的记录是否大于0,如果是,则执行一条insert into总访问记录表(日期,次数) select 日期,count(1) from今日访问记录表 where 日期=today  就行了;在其它应用中Update是避免不了的,我们只能告诉用户,为了避免读脏数据,您只能等其他用户处理完释放表后才能操作;
    但在主页里,我们可以避开update操作带来的锁表问题;