1.c/s 三层erp
2.数据库服务器是win2003+SqlServer2005
3.数据库服务器是ibm 至强2.5八核,内存12G
4.中间层服务器是ibm 至强2.5四核win2000Server 4G内存
4.数据库文件60G,压缩后40G
用 sp_who[sa] 显示410个连接。
最近erp 很慢,重新索引收缩数据库后,还是很慢。数据库服务器也重做了。请问是什么原因?数据库服务器sqlserver压缩索引
2.数据库服务器是win2003+SqlServer2005
3.数据库服务器是ibm 至强2.5八核,内存12G
4.中间层服务器是ibm 至强2.5四核win2000Server 4G内存
4.数据库文件60G,压缩后40G
用 sp_who[sa] 显示410个连接。
最近erp 很慢,重新索引收缩数据库后,还是很慢。数据库服务器也重做了。请问是什么原因?数据库服务器sqlserver压缩索引
查询,插入都慢吗
SELECT * FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC select * from sys.dm_os_waiting_tasks
ORDER BY wait_duration_ms DESC
------------------------------------
有多少个用户,为何这么多连接?
还有看日志文件,如果太大了就要截断日志、清空日志
如果你的服务器开了一段时间,那这些数据是比较靠谱的,假设你不是重启后马上查询的话,建议如下:
1、用性能计数器查看SQL Server: Buffer Manager: Page life expectancy 的时间,一般平均值应该在300s以上,1000s更好。过低意味着内存不够,当然这种情况下通常是缺少合理甚至完全全少索引,导致经常表扫描或者范围扫描,每次都占用很大内存,导致内存中的数据频繁清空。
2、为了不影响服务器级别的设置,先不要降低并行设置,但是可以可以先提高并行阈值,让其“达不到”并行运行的开销而依旧选择串行执行:
sp_configure 'show advanced options',1
go
RECONFIGURE
go
sp_configure 'cost threshold for parallelism',25
GO
RECONFIGURE
GO3、绝大部分问题都是索引和查询导致的。如果上面的无效,看看重建聚集索引、做日志备份、还有监控一下磁盘问题:
http://blog.csdn.net/dba_huangzj/article/details/8614817
已重建索引了,没有效果。用profiler创建跟踪,发现 Audit Logout 的 Duration 时间最长
SELECT TOP 30
ROUND(s.avg_total_user_cost * s.avg_user_impact * ( s.user_seeks
+ s.user_scans ),
0) AS [Total Cost] ,
s.avg_total_user_cost * ( s.avg_user_impact / 100.0 ) * ( s.user_seeks
+ s.user_scans ) AS Improvement_Measure ,
DB_NAME() AS DatabaseName ,
d.[statement] AS [Table Name] ,
equality_columns ,
inequality_columns ,
included_columns
FROM sys.dm_db_missing_index_groups g
INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle
INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle
WHERE s.avg_total_user_cost * ( s.avg_user_impact / 100.0 ) * ( s.user_seeks
+ s.user_scans ) > 10
ORDER BY [Total Cost] DESC ,
s.avg_total_user_cost * s.avg_user_impact * ( s.user_seeks
+ s.user_scans ) DESC
所有的操作都慢,还是局部慢?我想可能是某个事务造成的。如果能够找到那个事务,建议你使用事务系列化隔离级别高点,SET TRANSACTION ISOLATION LEVEL SERIALIZABLE --系列化级别
或
SET TRANSACTION ISOLATION LEVEL SNAPSHOT --已提交读快照级
2.在慢的时间点抓10分钟trace
3.参考性能计数器三个同时进行,基本能定位问题。另外还要看下SQL内存配置。
一、出现死锁
二、磁盘I/O被某个进程(例如备份)或者被其它应用程序占用
三、Windows异常,例如,某个进程占据CPU而不能正常释放。