Ber*_*ter 3 sql-server delete transaction-log sql-server-2016
现在,我知道日志在大删除过程中会变大,应该尝试将其分成几批。但我觉得这种情况很奇怪,如果有人能向我解释,那就太好了!
我有一个 27GB 的数据库和大约 30GB 的日志。被删除的表大小约为 15GB,其中有 2000 万条记录。该表有 20 列,只有 bigint 和 int 数据类型。
删除操作是从相关表中删除 1800 万条重复记录。我已切换选择进行删除以确保记录计数匹配并且确实如此。
在我用完磁盘空间并被迫回滚之前,日志增长到大约 110GB。
表上没有触发器,只有16个非聚集索引,没有聚集索引。如果我在运行操作之前禁用所有索引,它会完成而不会从原始大小增加日志。
所以我的问题是,从表中删除时,我是否记录了每个索引的每次删除?如果是这样,这是正常行为还是可能是因为缺少聚集索引?
所以我的问题是,从表中删除时,我是否记录了每个索引的每次删除?
你当然是。日志包含对每个页面的每次更改的记录,其中包含重做或撤消更改的足够详细信息。
如果是这样,这是正常行为还是可能是因为缺少聚集索引?
无关。您要从17 个单独的“索引”、16 个非集群索引和一个堆中的每一个中删除 1800 万行。
禁用/重建非聚集索引比删除/创建它们更安全,因为索引定义保留在服务器上。