这可能是一个非常基本的问题,但是如何事先确定大型操作最终会使用数据库日志还是 tempdb 空间?
例如,我所做的一个大型插入/更新操作使用了数据库日志,以至于我们需要使用 SSIS 和批量操作,这样空间就不会用完,因为脚本中的所有更改都必须部署在一个时间。
所以现在我正在处理一个大规模的删除操作,这将把日志填满 10 次。所以我创建了一个脚本来检查数据库日志文件使用的空间并以较小的批次删除行,其想法是一旦日志文件足够大,脚本将中止,然后第二天从该点继续(允许正常使用一直持续到下一次备份,没有日志空间不足的风险)。
现在,后一个查询开始填充 tempdb,而不是填充日志。具体来说是 Tempdb 数据文件,而不是日志文件。所以我认为我对这两者的理解应该存在一个巨大的漏洞。:)
感谢您的任何建议!
编辑:
澄清一下,这里的问题是为什么第一个示例使用数据库日志,而后者使用 tempdb 数据文件来存储更改?通常,DML 操作通过哪种逻辑存储到 tempdb 或 log 中?通常 log 应该存储所有 DB 更改,而 tempdb 仅用于在显式请求(即临时对象)或服务器耗尽 RAM 时存储操作期间处理的数据,对吗?