我与一家托管公司的专业人士进行了交谈,他告诉我 MS SQL Server 在执行查询时确实比 MySQL 占用更多内存。这是真的吗?您认为这背后的原因是什么?是什么让 SQL Server 需要更多的 RAM?
答案1
很可能是因为 (a) 这个人并不真正了解自己在说什么,并且 (b) MS 并不针对小型数据库。
对于 a:除非另有说明,否则 SQL Server 将使用尽可能多的 RAM 在内存中缓存数据库页面。这意味着在任何处于活动状态且具有大于内存的非平凡数据库的环境中,内存将填满 100%。要点。这是设计用来加快速度的,SQL Server 正确地假设它单独运行(严肃的数据库确实如此)并且比文件系统缓存更了解情况。对 SQL Server 了解不多的人通常会忽略这一点。如果您希望 SQL Server 使用较少的 RAM,管理员必须这样说(这是一个限制使用 RAM 的设置)。
对于 b:SQL Server 的目标是高端可扩展性,而 MS 通常不考虑需要优化的低端边缘情况。它使用 10 还是 20mb RAM 并没有实际区别,但一旦达到 1000gb,可扩展性就更为重要。
最后,如果不知道细节,就无法知道这个人是遇到了可扩展性低的问题还是仅仅是能力不足。
答案2
我已经很久没有安装过 MySQL 了(Sun 收购了它,我对它的喜爱就此消退,而 Oracle 随后收购它,更是让我对它的喜爱荡然无存),但如果我没记错的话,MySQL 的安装会提示进行一些设置,这些设置可以有效地限制 MySQL 的内存使用等,开箱即用。另一方面,SQL Server Standard 和 Enterprise 版本会将 SQL Server 设置为最大限度地利用服务器上的资源。这与 SQL Server Express 不同,后者的安装方式会尽可能地限制其所需的资源。
SQL Server Express 可以配置为使用更多资源(因为它是 Express,所以最多可以使用),而标准版和企业版可以配置为限制对内存、处理器等的访问。使用 SQL Server Management Studio 可以相当轻松地配置它们,但很多人不会触碰这些设置。因此,开箱即用的 MS SQL Server 将占用更多资源,因为它假定您希望最大限度地利用资源以获得最佳性能。
因此,综上所述,如果您的托管人员只是运行安装而没有进一步的操作,MySQL 的占用空间将更小。但这并不意味着 MySQL 不能配置为使用更多资源,也不意味着 SQL Server 不能配置为使用更少资源。