我正在使用 SQL Server 2016 和 SQL Server 2019 标准版。我们有这份工作已经有一段时间了。它曾经很小,但现在它运行了几十个SELECT/DELETE
语句。(语句之间没有GO
分隔符。)
- 我想知道 SQL Server 如何为作业步骤分配 RAM?
- SQL 会尝试一次为整个步骤分配 RAM 吗?
- 或者它会在运行该步骤时为每个查询分配 RAM?
- 考虑到 RAM 的使用,对工作执行不同的步骤会更好吗?
无论如何,我可能最终会分离这份工作,即使只是为了监控目的。但由于我们使用的是 SQL 标准版,因此我密切监视 RAM 使用情况,无法找到有关 SQL 代理作业内部分配的信息。
从 SQL Server 代理运行的查询与从任何其他客户端(例如 SQL Server Management Studio)运行的查询完全相同。
将作业中的查询复制并粘贴到 SSMS 查询窗口中,打开实际执行计划,然后查看显示的内容。对于傻笑,您可以在每个查询之间添加批处理分隔符,再次运行它,看看它有什么不同。
SQL Server 以每个查询为基础分配内存,而不是一次为整个批处理分配内存。