首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server在线维护-虚假宣传?

Server在线维护-虚假宣传?
EN

Database Administration用户
提问于 2020-08-14 17:04:48
回答 1查看 84关注 0票数 0

我正面临挑战,因为我们的客户在运行所谓的在线维护时会看到不同类型的错误。错误,如超时,扫描停止由于数据移动等。

我们的一些客户购买了,以便能够获得重建索引在线功能。

为了复制这些问题,我一直在一个大型数据库dbcc checkdb上进行测试,重新组织和重建索引以及更新统计数据,而我却在一个几乎为1TB的数据库上用事务轰炸服务器。

我的第一个测试是在maxdop=1处理124000个小事务时使用校验数据库.我从我的应用程序中收到了一个超时,该应用程序将超时设置为5分钟。关于check工作方式的研究,即创建快照、密集地使用tempdb和创建nolocks来创建快照.那么,如果我的一个小事务不锁定表,它怎么会被阻塞呢?

我的第二个测试是在处理124000个事务时重新组织所有索引(这也应该是联机的),这次我遇到了一个死锁.

我的第三个测试是在运行124000个事务时用maxdop=1更新所有统计信息。在这种情况下收到的错误是:由于数据移动,无法继续扫描而没有锁定。

在运行124000事务时,重新构建所有索引的第四次测试将很快运行,我将用结果更新我的帖子。

我在可以使用它的地方使用的maxdop=1是为了消除资源争用。

我读过多篇文章,包括Paul对重建索引的在线和离线的解释,并理解其中的不同之处。但是就像我说的,我被要求解释为什么它不是真的在线,尽管微软声称它是在线的。

如有任何意见,将不胜感激。

我错过了什么

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-08-14 17:33:54

这里有很多问题。不过,我觉得答案不会让你开心。

DBCC CheckDB

为了复制这些问题,我一直在一个大型数据库dbcc checkdb上进行测试,重新组织和重建索引以及更新统计数据,而我却在一个几乎为1TB的数据库上用事务轰炸服务器。

我不知道我是否把DBCC CHECKDB和“在线维护”混为一谈,但从本质上来说,它肯定不是一种离线活动。尽管如此,它仍然可能是资源密集型的,虽然数据库在技术上仍然是在线的和可用的,但它可能表现为应用程序“不工作”。

我从我的应用程序中收到了一个超时,该应用程序的超时设置为5 minutes...So,如果它不锁定表,如何阻止我的一个小事务?

这并不表示任何阻塞,特别是自DBCC CHECKDB不会造成阻塞以来,除非您指定它应该阻塞。您应该更仔细地观察这些查询,看看超时的原因可能是什么--老实说,这可能是很多事情。

联机索引构建

我的第二个测试是在处理124000个事务时重新组织所有索引(这也应该是联机的),这次我遇到了一个死锁.

是索引重新组织语句还是另一个应用程序语句的死锁?我不记得曾经有一次重组导致了这个问题,但是死锁是生活中的一个事实,应用程序应该能够在遇到它们时优雅地重新尝试。在线操作并不能保证您不会陷入死锁。

大多数人将索引维护安排为一夜/周末,以帮助避免与锁定、阻塞和资源争用相关的问题。根据正常的工作时间工作负载进行测试肯定会给您带来一些问题,就像您看到的一样。

更新统计数据

我的第三个测试是在运行124000个事务时用maxdop=1更新所有统计信息。在这种情况下收到的错误是:由于数据移动,无法继续扫描而没有锁定。

这是您的责任(或者更确切地说,是应用程序):不要使用NOLOCK,也不会得到与NOLOCK相关的错误。同样,我不确定在大容量期间,我建议更新繁忙系统上的所有状态,所以这似乎是一个注定会有问题的测试。

技术定义

我读过多篇文章,包括Paul对重建索引的在线和离线的解释,并理解其中的不同之处。但是就像我说的,我被要求解释为什么它不是真的在线,尽管微软声称它是在线的。

如果你读了这篇文章,你就会知道在线并不意味着没有锁。这个词的定义是高度语境的。您可以将您需要的任何人指向关于在线重建的文档

虽然不常见,但由于用户或应用程序活动,联机索引操作与数据库更新交互时会导致死锁。在这些罕见的情况下,Server数据库引擎将选择用户或应用程序活动作为死锁受害者。

结论

所有这一切都是说,不管维护操作是否能够“联机”,大多数人都不会在全部工作负载期间测试它们,也不会期望它们在正常事务量期间工作良好。

大多数情况下,您实际上不需要重新构建/重新组织所有索引,也不需要同时更新所有状态,即使在维护窗口中也是如此。如果您有一个VLDB,那么将DBCC CHECKDB拆分成不同的窗口(就像Paul已经很好地介绍了)。

我将更多地关注这些事情将如何/何时实际运行。使用类似Ola维修解决方案的东西,这样您就不会让Server做比它必须做的更多的工作。

让你的客户降低他们的期望!

也见

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/273768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档