MS SQL数据库太大30多G,服务器很慢,该如何处理?用了ms sql 2000+SP4

yousoft2013 2006-10-31 10:08:50
数据量很大,客户端的有上百个,不过应用使用了三层结构,客户端不直接连服务器。
有没有什么好的办法?提高服务器的性能,让服务器更快点

...全文
479 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
vovo2000 2006-11-01
数据库慢跟大没有必然联系。
建议用事件探查器看看有没有效率低下的查询和不合理的索引等。
  • 打赏
  • 举报
回复
allright_flash 2006-11-01
应该建索引了。但是数据量太大的话,硬件解决才是根本。
  • 打赏
  • 举报
回复
yousoft2013 2006-11-01
日志我已经截掉,日志文件很小,不到2G,服务器升过级的,用的就是磁盘阵列。

重建索引还没试
  • 打赏
  • 举报
回复
dawugui 2006-10-31
对经常使用的查询字段建立索引.
  • 打赏
  • 举报
回复
dawugui 2006-10-31
清除日志:


DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE szwzcheck -- 要操作的数据库名
SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 20 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name =
@LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF

把szwzcheck换成你数据库的名字即可,在查询分析器里面运行。
有全角的空格(为了显示好看),你自己把他换一下.


收缩日志:

企业管理器--所有任务--收缩数据库--文件--选日志文件收缩
  • 打赏
  • 举报
回复
子陌红尘 2006-10-31
确定性能瓶颈在磁盘的I/O上?

升级硬件是一个比较简单的途解办法,为了提高磁盘的I/O,可以使用磁盘阵列替代原有的磁盘存储设备,但是要选择正确的RAID级别。
  • 打赏
  • 举报
回复
yitangliang 2006-10-31
用Proflier跟踪SQL Server,看看哪些语句占资源厉害,优化一下就行了,还有,看看table的索引碎片多不多,多的话找个时间做下dbcc dbreindex,还有如果服务器内存达4GB或超过4GB记得打开SQL Server AWE模式,相应的操作系统启动参数加上/PAE
  • 打赏
  • 举报
回复
pazuochuan 2006-10-31
MARK
  • 打赏
  • 举报
回复
OracleRoob 2006-10-31
查看执行计划,如果不是处理方式的问题,就应该升级硬件了。
  • 打赏
  • 举报
回复
luoqun_ncs 2006-10-31
连慢在哪里都不知道就开药方了么?
  • 打赏
  • 举报
回复
发帖
疑难问题
加入

2.1w+

社区成员

MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
申请成为版主
帖子事件
创建了帖子
2006-10-31 10:08
社区公告
暂无公告