问题:确定 SQL Server Express 的限制是否是环境中的瓶颈的最佳方法是什么?例如,是否有一些性能计数器可以作为很好的指示?SQL Server 活动监视器中的某些信息是否能提供很好的证据?数据库大小限制很容易检查,但其他限制就不那么明确了。如果 Express 在使用的资源方面受到限制,那么查看系统范围的性能计数器似乎不是正确的方法。
一个相关的问题 - 是否可以使用 SQL Server 轻松试用标准版,而无需在试用之前或之后进行彻底的重新配置?理想的方法是在现有实例上“启用”完整版的功能,然后根据需要回滚。如果这不可能,那么安装单独的实例并暂时移动数据库也不错。
背景:我有一个环境,其中的主要应用程序是基于 Windows 的业务线应用程序,由 SQL Server Express 支持。该应用程序长期以来性能不佳,但直到最近,硬件、软件和一般环境都很陈旧且维护不善,这意味着迁移到具有更新软件和更现代、更合适的硬件的新环境可能会有所帮助。应用程序供应商认为从 SQL Server Express 2008 升级到 2014 或更高版本会有所帮助,但当时并不切实际。
在迁移到具有现代硬件的全新环境(Windows Server 2016 和 SQL Express 2016)后,应用程序仍然表现不佳。我们怀疑,如果瓶颈实际上是 SQL Server Express 的限制,则可能会发生这种情况;但是,我不确定如何确定是这种情况,而不是其他原因。新环境在 CPU、内存和磁盘方面拥有充足的资源,因此我认为这种情况不太可能发生,但我更希望有一些确凿的证据。
如果有的话,它比以前稍微慢一些,可能是因为 SQL 数据库引擎和应用程序现在在不同的虚拟机上运行(尽管在同一个虚拟交换机上),而以前它们都运行在同一个物理机上。
任何研究过它的人都知道,全功能 SQL Server 并不便宜,因此商业案例需要有确凿的证据支持,证明这是所需要的,并且肯定会带来推动作用。
答案1
正如您所说,应用程序运行了很长时间,因此我认为可用性和使用量从那时起就发生了变化,这可能会导致性能下降。SQL Express 有资源限制,可能会直接影响您遇到的性能问题。即使您的硬件规格很好,SQL 也可能根本不使用它。
主要限制如下(SQL2012-2016):
- 缓冲池可用内存:1.2GB
- 最大 CPU 核心数:限制为 1 个插槽或 4 个核心(以较少者为准)
- 数据库大小:10GB
关于另一个问题:是的,您可以在试用期内并行安装标准版以查看其运行情况,甚至可以在测试服务器上安装开发版,它具有企业版的所有功能,并且是免费的。
基本上,您需要备份 Express 版本上的数据库,并在新实例上恢复。您还需要更改应用程序的连接字符串以指向新的命名实例。
问题是,您的性能问题可能是或不是由于 Express 版本的限制造成的。深入研究 SQL 内部的执行情况会很有趣,例如 SQL Server 正在等待什么、哪些内容消耗资源最多、哪些查询占用的资源最多等等。
这里有关于如何对你的系统进行免费性能检查的方法,如果你不清楚如何解释结果,请将它们发布在这里,我相信会有人帮助你。