数据库比较大,大概700g,一个单独的表大概有10g,在上面跑数据很慢,然后就停止了。
现在的磁盘很高,根本无法执行任何操作,重启服务器和sql服务都会提示该数据库回复中,磁盘高的离谱,回复完之后,磁盘还是居高不下。那位大侠帮帮忙,急等

解决方案 »

  1.   

    内存有压力吗?Log文件和数据文件有没有放在不同的磁盘?TEMPDB的位置?有没有做分区表?是OLAP的数据库还是OLTP?
      

  2.   


    内存没问题,很正常
    log文件和数据库文件同在一个磁盘
    tempdb在其他的磁盘
    没有做分区表
    对于OLAP,和OLTP 不太清楚,当我估计是OLAP的数据库
    高手请指点
      

  3.   

    下次请说清楚:磁盘过高是指什么?I/O?空间?不说清楚无法对症下药。
    我给你几个个人浅见,希望你有用:
    1、就算再大的数据库,也有很大成分是历史数据,所以应该把一些历史数据存放到读性能比较高的盘。这里有几个前提:a、数据库要分多个文件组,不要都放在primary那里。b、有做磁盘阵列。c、磁盘够大。
    2、对于业务表,把索引和数据也分开存放,同样使用多个文件组,我的建议是,对于所有表,分最少4个文件组,primary放系统数据,hisData(我的命名)放历史数据,indexData放表的索引,Data放数据,把indexData和Data这两个分开放到读写都比较好的盘上,比如raid10的盘。进一步把I/O压力分开。
    3、如果你的CPU个数少于10个,那么按照cpu的个数,拆分tempdb,tempdb的数据文件个数与CPU个数一一对应,大小要一致,另外分1~2个tempdb的日志文件,要分配大一点。同时初始化估计都要到5G左右。自增限制到10G作于吧。够用了。
    4、对1000万以上的表尽量做分区,这是必须的。否则肯定慢。
    5、优化语句。优化索引,这个课题太大,无法一下子说清楚。但是这一步至关重要。
    6、根据业务,考虑把经常读的数据移到另外一个数据库,缓解读的压力。主数据库已写为主。
    7、定期重建索引(前提是索引是合理的),你那个规模,可能要每天重建了。
    8、定期用DBCC CHECKDB检查数据库是否正常,但是对超大数据库有特殊的DBCC,建议你自己去找一下。
    9、2008以后,你对实例点右键→报表→对象执行统计情况这个报表,可以看到最耗资源的10个查询,你逐个优化。
    我的最近案例:我把公司的数据库最慢的功能所使用到的表的索引全部调整了一次,一个频繁调用的存储过程从40分钟降到31秒,整个系统接近提升了一倍性能,因为那个存储过程太重要了。所以你要做的事情还是很多很多,但是先从配置着手,然后重点优化性能。
      

  4.   


    DBCC CHECKDB检查数据库,如果不正常,怎么办呢?
      

  5.   

    DBCC CHECKDB检查数据库,如果不正常,怎么办呢? 检查完后微软建议的解决方法是什么?能不能把你的错误信息贴出来
      

  6.   

    内存多少?占用了多少?
    cpu占用高不高?
    查询要几秒钟?
      

  7.   


    消息 7929,级别 16,状态 1,第 1 行
    CHECK 语句已中止。数据库包含延迟的事务。先谢谢各位了
      

  8.   


    内存没问题,正常
    主要是磁盘io很大,平均2w
    查询无法统计,暂时没有试过
      

  9.   

    内存正常,报个具体多少G,用了多少G,应该不是难题
    如果没有特别密集的操作,也可能是硬盘出问题了,才导致io大。。是阵列的吗?
      

  10.   


     系统是32位的,内存是5g,用了2.8g,sql 用了1.7G,重启服务器后磁盘io也在1w左右。磁盘应该没问题,问题应该出现在数据库那里吧
      

  11.   

    有没有开PAE/AWE? 700G的数据库内存只用了1.7G太不正常了。 
      

  12.   

    另外你有没有限制SQL SERVER使用的最大内存?
      

  13.   

    5G内存太少了,我现在的笔记本都8G
    难怪io多。
      

  14.   

    http://blog.csdn.net/szstephenzhou/article/details/7783252