SQL 2000进程阻塞 有什么解决办法

来源:百度知道 编辑:UC知道 时间:2024/07/04 14:58:03
服务器有4G内存,内存采用动态分配,最小值为746M,最大值为2002M,为SQLServer保留物理内存,最小查询内存设为1024(KB)(M),
可是常常出现查询速度慢,常常很久没有显示结果,查看任务管理器,SQL占用的内存达到1.7G,
在SQL管理查看当前活动的进程,尽是一片红色,死锁怎么那么容易出现呢?配置哪里出错了,
有经验的请指点下,如果能有效解决问题再加分
出现的是进程阻塞,怎么避免呢,服务器不是SQL专用的,还有Tomcat和其他通信程序

SQL Server 的内存管理机制是:
有可用内存, 则为新需求分配内存
无可用内存时, 释放内存来处理新需求.

这是SQL Server 缓冲池的预期行为。
默认情况下,在启动 SQL Server之后,SQL Server会根据操作系统报告的物理内存数来动态增大或缩小高速缓冲存储器的容量。
只要可用物理内存大小保持在4MB到10MB之间,SQL Server 缓冲池就会继续增大(保留可用物理内存在4MB到10MB之间是为了
避免操作系统因为缺少内存而频繁地换页)。如果物理可用内存变得较少的时候,则SQL Server会将一些内存释放给操作系统。

解决方案:
1.给操作系统、sql server打最新补丁
2.确保不是病毒原因(可能性比较小)
3.sql server设计时的要求就是最大可能的减少磁盘的I/O,磁盘I/O是比较消耗资源的,这个磁盘I/O包括了读取数据库文件
还有和虚拟内存的页交换。如果还有足够的可用内存它都会毫不吝啬的使用的(没有设置上限),它会根据需要动态获取和
释放内存的。你要分析的是这占用的内存开销主要用做了什么?是不是有大型的查询或事务操作。
4.如果服务器是专职的数据库服务器,不建议设置最大内存上限。如果还有其它重要的服务在机器上运行,就要考虑它的内存
使用是否会影响其它服务的正常的运行和性能。如果你的服务器除了sql服务, 还有其他服务需求, 则需要设置sql server的最大内存限制

如果只是查询操作不会造成死锁。死锁往往是写入操作造成的。
查询速度慢有可能是其他写入操作造成的。可以停止所有写入操作然后再查询看看速度如何,查询优化是很讲究的一件事,一般经过优化可以有大幅度提高。

另外,如果SQLServer专用一台服务器,最好使用固定内容分配,windows请求内存区域非常耗费资源。查询内存设的再大些。