我正在运行基于C#的基于桌面的应用程序,该应用程序连接到Microsoft SQL Server Express数据库。大约有20-30个用户正在访问此应用程序,同时有20-30个以上的系统同时与数据库连接,并且每天24小时工作。运行的操作系统是Windows Server 2012 Standard。
有时,当我重新启动服务器时,应用程序中会遇到严重的性能问题,一切都变得正常。
我已经扫描了所有计算机,没有检测到病毒。看起来在网络设备中也没有问题。
可能是什么问题呢?垃圾收集?
谢谢
最佳答案
SQL Server Express Edition有一些模仿:
支持的CPU数量:一次仅一个CPU(对于SQL Express 2016,最大内核= 4)。因此,如果您的服务器有多个CPU,则一次只能使用一个CPU。
使用的最大内存:数据缓冲区的最大1 GB内存。因此,如果您的服务器具有更多GB内存,则SQL Server Express无法利用它。
数据库大小限制:最大数据库大小限制为4 GB(SQL Express 2016为10GB)
DISK I / O速度和内存是提高SQL性能的主要资源之一。由于数据长时间处于高速缓存中,因此服务器从内存而不是磁盘读取数据。
可以帮助发现服务器性能瓶颈的一种措施是测量页面预期寿命(PLE)。对于具有4GB内存的服务器,它应该> 300(但实际上sql express使用限制为1GB)。
PLE是平均数据页已进入缓冲池的秒数。将数据保留在内存中可以使SQL Server更快地访问它,而不必花费很长的时间来缓慢地访问磁盘。此措施可以让您睁开眼睛,引导您解决可以解决的问题。
您可以通过执行以下操作获得:
SELECT object_name,
counter_name,
cntr_value AS [value]
FROM sys.dm_os_performance_counters
WHERE LTRIM(RTRIM(object_name)) = 'SQLServer:Buffer Manager'
AND LTRIM(RTRIM(counter_name)) = 'Page life expectancy' ;
在sql express中,您会松散有助于增强PLE计数器的关键资源(内存限制1GB)。
您的系统有20-30个用户,另外还有20-30个系统同时与数据库连接,并且每天24小时工作。
最好升级到SQL Standard Edition 2016,而不受内存(最大128GB)和CPU /核(最大24核)的限制。