>>现在服务器程序有时会出现没响应的情况,导致正在处理的服务无法进行,查出是数据库影响的。而且这种情况是可重现的,如对几万条记录的删除或对数据库收缩时,服务器程序也会出现这种现象,但以前记录是50万时没有这种情况出现。问题:
1、数据库影响的指的是怎样的影响,是由于性能下降?!
2、你经常做对几万条记录的删除或对数据库收缩吗?提醒:
   可能你需要优化你的服务器,但你的问题描述得很不清楚。

解决方案 »

  1.   

    回Haiwer:
        问题1:影响是指服务器程序出现的无响应是与SQL Server有关的,现只知道50多万记录时无这种情况,而且当对对几万条记录的删除或对数据库收缩时,同样会出现服务器程序无响应。
       问题2:我只是为出重现这种现象才会对几万条记录的删除或对数据库收缩,但我不会常做这种操作,而现在服务器程序几乎每天都出现没响应的情况。
       补充:试验过将记录数减为30万条,几天都无出现这种情况把数据库换为80条时,情况又出现了
      

  2.   

    这显然是数据库处理数据出现问题,有着方方面面的原因,下面提出几点以供参考:
    1、应用程序对数据库进行操作的sql语句问题,在大记录量的情况下,尽量少用诸如“select * from table1”之类的sql操作,应该指明字段、记录条数、使用游标等等。这里对sql语句的功效进行要求,一般在小数据量情况下表现不会很明显,在大数据量则情况完全不同。
    2、关于索引问题,不是索引越多越好,这里请注意查这方面的资料。
    3、数据库设计是否合理问题。一般好的设计和差的设计在大数据量和频繁操作的情况下效率会表现出迥然不同的结果。
    4、推荐一本书。好像叫什么“MSSQL Server性能调整与优化”,机械工业出版社。
      

  3.   

    >>出现服务器程序无响应
    对几万条记录的删除或对数据库收缩这样的操作,本身需要执行一定时间,如果没有执行完,那客户端可能出现“无响应”的情况,一般应该等待,而不要终止程序,因为终止程序后的事务回退更花时间。我感觉你的问题还是在你的应用程序,你不妨在以下几个方面考虑:
    1、应用程序中有没有考虑事务量的问题,即一个事务处理的数据量是不是有太大的情况(如删除大量数据)。
    2、索引的效率问题,在删除和修改操作中,索引非常重要,特别是修改操作。
    3、数据库连接问题,你提到你的数据库连接会经常中断(不知道是不是远程连接),数据库连接的不稳定会造成各种死机。
    4、你提到的“服务器程序”是不是中间层的程序?
    5、有没有查锁的情况?
    6、服务器配置是不是低了?
      

  4.   

    很感谢大家的指教,关于问题的更多资料:
    1、服务器是HP-LH4,PIII 500;
    2、服务器程序不是中间层的程序,程序运行了6个副本,有的是在与数据库同机的,有的不同机,都是以ODBC相连;
    3、程序中没有用事务处理,也没有进行大的操作(主要是检索和更新记录,有10万次是做LOG记录),其中检索主要是为了验证客户信息,结果不会超过10条。Select 时都是只选本次操作有用的字段,不用select *;
    很感谢lcooky推荐"MSSQL Server性能调整与优化”,我要赶快买,认真查一下
    问一下大家,有没有可能与我程序中用API都是同步有关,好像哪些API有异步用法的。还问一下现在这个数据库是属于一个怎样的规模(大不是小),这种操作量的负荷算不算大
      

  5.   

    很感谢大家的指教,关于问题的更多资料:
    1、服务器是HP-LH4,PIII 500;
    2、服务器程序不是中间层的程序,程序运行了6个副本,有的是在与数据库同机的,有的不同机,都是以ODBC相连;
    3、程序中没有用事务处理,也没有进行大的操作(主要是检索和更新记录,有10万次是做LOG记录),其中检索主要是为了验证客户信息,结果不会超过10条。Select 时都是只选本次操作有用的字段,不用select *;
    很感谢lcooky推荐"MSSQL Server性能调整与优化”,我要赶快买,认真查一下
    问一下大家,有没有可能与我程序中用API都是同步有关,好像哪些API有异步用法的。还问一下现在这个数据库是属于一个怎样的规模(大不是小),这种操作量的负荷算不算大
      

  6.   

    问一下大家,有没有可能与我程序中用API都是同步有关,好像SQL的API有异步用法的。还问一下现在这个数据库是属于一个怎样的规模(算大还是小),这种操作量的负荷算不算大