如果我有一个默认填充因子为 100% 的索引,并且修改会导致大量内部碎片(页面拆分、可用空间等),从而导致许多页面最终达到 60% 左右,而不是 100%,那么索引重建/重新组织将数据压缩为更少的数据页,从而导致数据库中报告更多可用空间?
如果前面的情况成立,那么在执行收缩操作之前重新组织索引以最大化收缩所获得的空间是否有意义(在收缩之后进行另一次重新组织以减少收缩引起的碎片)?
最后,DBCC Shrinkfile 是否像重建一样压缩数据页,还是仅移动数据页?
如果我有一个默认填充因子为 100% 的索引,并且修改会导致大量内部碎片(页面拆分、可用空间等),从而导致许多页面最终达到 60% 左右,而不是 100%,那么索引重建/重新组织将数据压缩为更少的数据页,从而导致数据库中报告更多可用空间?
如果前面的情况成立,那么在执行收缩操作之前重新组织索引以最大化收缩所获得的空间是否有意义(在收缩之后进行另一次重新组织以减少收缩引起的碎片)?
最后,DBCC Shrinkfile 是否像重建一样压缩数据页,还是仅移动数据页?
对于下面的查询,我试图弄清楚为什么 SQL Server 在 sysjobhistory 表上建议的索引(也是导致查找的索引)是在 Job_Id 列上创建的,其中包括其他列:
Job_Id 包括(Run_date、Run_time、Instance_id)
据我了解,where 子句中的列应该出现在索引键中,以便可以进行搜索。Run_date 和 Run_time 出现在下面查询的 where 子句中,那么我们为什么可以将它们包含在索引中而不是将它们作为键列呢?
查询:
SELECT TOP 10000 run_date
FROM msdb.dbo.sysjobhistory sh
WHERE EXISTS (SELECT 1 FROM msdb.dbo.sysjobs sj WHERE sh.job_id = sj.job_id
AND EXISTS (SELECT 1 FROM msdb.dbo.sysjobschedules sjs WHERE sjs.job_id = sj.job_id
AND EXISTS (SELECT 1 FROM msdb.dbo.sysschedules ss WHERE ss.schedule_id = sjs.schedule_id
AND ss.freq_subday_type = 2
AND ss.freq_subday_interval = 10 )))
AND CAST(CAST([run_date] AS CHAR(8)) + ' ' + STUFF(STUFF(RIGHT('000000' + CAST([run_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') AS DATETIME) < dateadd(hh,-12,getdate())
注意:我没有使用联接,因为该查询是 cte 的一部分,然后我从中删除,因此不可能进行联接。
是否可以将 Windows Server 2016 计算机加入现有的 Windows Server 2022 2 节点故障转移群集?集群是域无关的。
假设设置:
我的目标是将运行 SQL Server 2016 的 Windows Server 2016 计算机加入到运行 SQL Server 2022 的 Windows Server 2022 故障转移群集。这将是 Always On 可用性组设置。
一旦节点 1 和 2 与节点 3 同步,我计划故障转移到节点 1 并从集群中删除节点 3。
我知道可以在 Windows 服务器故障转移群集上设置 Always on 可用性组,而无需集成 Active Directory。
但是,是否可以在不集成 Active Directory 的情况下创建 SQL Server 故障转移群集实例高可用性解决方案?我在网上找不到有关该主题的任何内容。
我目前正在考虑使用 Ola Hallengren 的索引维护解决方案来每天更新一次统计信息。如果数据库将 AUTO_UPDATE_STATISTICS 设置为开,此解决方案有什么好处?
我在 SQL Server 2016 上。