我正在运行一个基于桌面的应用程序,该应用程序使用C#连接到Microsoft SQL Server Express数据库。大约有20-30个用户正在访问此应用程序,而另外20-30个用户同时与数据库连接,并且每天24小时工作。运行的操作系统是Windows Server 2012 Standard。
有时我在应用程序中遇到严重的性能问题,当我重新启动服务器时,一切都变得正常了。
我已经扫描了所有计算机,但没有检测到病毒。看起来网络设备也没问题。
可能是什么问题?垃圾收集?
由于
答案 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%也会增加内存。