求sql 2008 磁盘过高出现的原因和解决办法, 数据库比较大,大概700g,一个单独的表大概有10g,在上面跑数据很慢,然后就停止了。现在的磁盘很高,根本无法执行任何操作,重启服务器和sql服务都会提示该数据库回复中,磁盘高的离谱,回复完之后,磁盘还是居高不下。那位大侠帮帮忙,急等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 内存有压力吗?Log文件和数据文件有没有放在不同的磁盘?TEMPDB的位置?有没有做分区表?是OLAP的数据库还是OLTP? 内存没问题,很正常log文件和数据库文件同在一个磁盘tempdb在其他的磁盘没有做分区表对于OLAP,和OLTP 不太清楚,当我估计是OLAP的数据库高手请指点 下次请说清楚:磁盘过高是指什么?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秒,整个系统接近提升了一倍性能,因为那个存储过程太重要了。所以你要做的事情还是很多很多,但是先从配置着手,然后重点优化性能。 DBCC CHECKDB检查数据库,如果不正常,怎么办呢? DBCC CHECKDB检查数据库,如果不正常,怎么办呢? 检查完后微软建议的解决方法是什么?能不能把你的错误信息贴出来 内存多少?占用了多少?cpu占用高不高?查询要几秒钟? 消息 7929,级别 16,状态 1,第 1 行CHECK 语句已中止。数据库包含延迟的事务。先谢谢各位了 内存没问题,正常主要是磁盘io很大,平均2w查询无法统计,暂时没有试过 内存正常,报个具体多少G,用了多少G,应该不是难题如果没有特别密集的操作,也可能是硬盘出问题了,才导致io大。。是阵列的吗? 系统是32位的,内存是5g,用了2.8g,sql 用了1.7G,重启服务器后磁盘io也在1w左右。磁盘应该没问题,问题应该出现在数据库那里吧 有没有开PAE/AWE? 700G的数据库内存只用了1.7G太不正常了。 另外你有没有限制SQL SERVER使用的最大内存? 5G内存太少了,我现在的笔记本都8G难怪io多。 http://blog.csdn.net/szstephenzhou/article/details/7783252 求一SQL (急救!!!!) 查询所有下级用户 记录SQL执行了哪些语句 Sql2005可以安装在winXP+sp2系统????????? 存储过程的一个简单问题 存储过程实现导入文本文件 利用xp_cmdshell 结合 DOS的ECHO和输出重定向,写了一个写磁盘文件的存储过程。 问一个关于null的问题 关系级联的作用? MSDE的菜鸟问题 SQL2008R2还原数据库出现奇怪问题.求解. 往数据库里存放文件的问题
内存没问题,很正常
log文件和数据库文件同在一个磁盘
tempdb在其他的磁盘
没有做分区表
对于OLAP,和OLTP 不太清楚,当我估计是OLAP的数据库
高手请指点
我给你几个个人浅见,希望你有用:
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秒,整个系统接近提升了一倍性能,因为那个存储过程太重要了。所以你要做的事情还是很多很多,但是先从配置着手,然后重点优化性能。
DBCC CHECKDB检查数据库,如果不正常,怎么办呢?
cpu占用高不高?
查询要几秒钟?
消息 7929,级别 16,状态 1,第 1 行
CHECK 语句已中止。数据库包含延迟的事务。先谢谢各位了
内存没问题,正常
主要是磁盘io很大,平均2w
查询无法统计,暂时没有试过
如果没有特别密集的操作,也可能是硬盘出问题了,才导致io大。。是阵列的吗?
系统是32位的,内存是5g,用了2.8g,sql 用了1.7G,重启服务器后磁盘io也在1w左右。磁盘应该没问题,问题应该出现在数据库那里吧
难怪io多。