日期:2014-05-18  浏览次数:20566 次

请教数据库的"等待类型"
数据库并发比较多,查到主要等待事件如下:write log、PAGELATCH_SH、PAGELATCH_EX事件。当发生这些事件时,用windows自带的“性能监视器”检测到操作系统的物理IO满负荷,此时系统操作响应很慢(点击电脑短时间内没反应,而不出现这些等待事件时点击电脑是很快的),另外,此机器只运行数据库服务的(数据库专用)。

请问这些问题应该怎样处理优化解决呢?大伙们指教下吧,实在没招了

------解决方案--------------------
write log、PAGELATCH_SH、PAGELATCH_EX
>>>

(1) 尝试着将 TempDB放到一个单独的磁盤上

(2) 将数据库的 Log文件跟数据文件分开放在不同的磁盤.

(3) 如果每天都有备份,那试着将恢复模式改成"Simple".


------解决方案--------------------
引用楼主 vinsonshen 的帖子:
数据库并发比较多,查到主要等待事件如下:write log、PAGELATCH_SH、PAGELATCH_EX事件。当发生这些事件时,用windows自带的“性能监视器”检测到操作系统的物理IO满负荷,此时系统操作响应很慢(点击电脑短时间内没反应,而不出现这些等待事件时点击电脑是很快的),另外,此机器只运行数据库服务的(数据库专用)。

请问这些问题应该怎样处理优化解决呢?大伙们指教下吧,实在没招了

------解决方案--------------------
....
------解决方案--------------------
大方向往小方向走了:

1:如果是多个磁盘,先找到磁盘IO最多的.
2:再找到IO等待,占用最多的库以及库文件.
3:接着就细化到对象了,这个只有PROFILE去跟踪和统计.
........等等


这个东西,综合技能要求特别高,我也没有很好的具体的一些步骤代码.

如果是2005,有很多动态视图关于IO的可以查和统计,2000就不太好弄,就只能PROFILE.
------解决方案--------------------
学习了!
------解决方案--------------------
帮顶 学习
------解决方案--------------------
关注。HOHO!
------解决方案--------------------
除了上面几位的,看了:

sql2000\4CPU\4G内存\一个硬盘

估计你的磁盘会有瓶颈。

可以抓一下perfmon ,参考一下 微软的推荐值:

磁盘 PhysicalDisk Avg. Disk sec/Read 磁盘读操作平均延迟时间(秒) <0.008
PhysicalDisk Avg. Disk sec/Write 磁盘写操作平均延迟时间(秒) <0.008





------解决方案--------------------
另外, 4 G 内存也有可能瓶颈, 是否打开 /3gb 了?

看看 perfmon 的Available Mbytes 系统总可用物理内存(MB)是否 <100

你的300分我要定了, 嘿嘿
------解决方案--------------------
探讨
谢谢各位的指教,忘了说环境了

补充如下:

sql2000\4CPU\4G内存\一个硬盘

------解决方案--------------------
愿有更多的朋友参与进来讨论
------解决方案--------------------
关注中...
------解决方案--------------------
探讨
关注中...

------解决方案--------------------

楼主

你再关注一下blocked ,waittime、WaitResources、status、phyiscal_io 这几个字段

当出现阻塞时,这几个字段的值是否在发生变化.

查到最终引起阻塞的那个SPID, 它到底是在等待什么资源.

这样才好下结论。


------解决方案--------------------
你说的事件都是与磁盘I/O有关的
你只有一个硬盘
如果你不增加硬盘,唯一的办法是减少I/O操作
可能不前只有一个有效方法,把你的恢复模式改成简单,用个job调度好备份

------解决方案--------------------
关注事态发展
------解决方案--------------------
关注!
------解决方案--------------------
你的这些等待是由事务和硬盘的瓶竟引起的.
一般情况下,对过程的优化有时会收到一些效果,不过,最重要的还是事务日志和TEMPDB上,只要将SQLSERVER的日志文件移到一个独立的磁盘中,把TEMPDB移到另一个独立的磁盘中,这种等待的时间将会减少很多.

一.移动TEMPDB方法.

--确定逻辑路径名。
use tempdb
go
sp_helpfile
go
use tempdb
go
sp_helpfile