SQL Server数据库响应时间问题缓慢

时间:2016-10-02 08:40:27

标签: c# sql-server performance garbage-collection

我正在运行一个基于桌面的应用程序,该应用程序使用C#连接到Microsoft SQL Server Express数据库。大约有20-30个用户正在访问此应用程序,而另外20-30个用户同时与数据库连接,并且每天24小时工作。运行的操作系统是Windows Server 2012 Standard。

有时我在应用程序中遇到严重的性能问题,当我重新启动服务器时,一切都变得正常了。

我已经扫描了所有计算机,但没有检测到病毒。看起来网络设备也没问题。

可能是什么问题?垃圾收集?

由于

2 个答案:

答案 0 :(得分:2)

有SQL Server Express Edition的模仿:

  • 支持的CPU数量:一次只能有一个CPU(sql express 2016的最大核心= 4)。因此,如果您的服务器有多个CPU,它一次只能使用一个CPU。

  • 使用的最大内存:数据缓冲区最大内存为1 GB。因此,如果您的服务器有更多GB内存,则SQL Server Express无法利用它。

  • 数据库大小限制:最大数据库大小限制为4 GB(2016年sql express为10GB)

DISK I / O速度和内存是sql性能的主要资源之一。由于数据长时间处于缓存中,因此服务器不是从磁盘读取内存。

有助于发现服务器性能瓶颈的措施之一是衡量页面预期寿命(PLE)。对于具有4GB内存的服务器应该是> 300(但实际上sql express使用限制为1GB)。

PLE是平均数据页在缓冲池中的秒数。将数据保存在内存中可以让SQL Server更快地访问它,而不是长时间地慢速访问磁盘。这项措施可以打开你的眼睛,引导你解决可以解决的问题。 你可以通过执行:

expr

在sql表示你松开了有助于增强PLE计数器的关键资源(内存限制1GB)。

您的系统是20-30个用户,另外20-30个系统同时与数据库连接,每天24小时工作。

最好升级到SQL Standard Edition 2016,不受内存(最高128GB)和CPU /内核(最多24核)的限制。

答案 1 :(得分:1)

查看Windows性能计数器。

我的第一眼看法是 SQLServer:内存管理器:服务器总内存(KB) SQLServer:内存管理器:目标服务器内存(KB)。 另请参阅缓冲区:缓存命中率计数器。

如果目标内存高于总内存增加内存。 如果缓存命中率平均低于99%也会增加内存。