AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-76835

Mike Petrak's questions

Martin Hope
Mike Petrak
Asked: 2024-05-23 21:28:47 +0800 CST

Azure SQL 托管实例:1. 初始编译时间过长导致应用程序超时和 2. 分区维护:长时间运行,导致数据文件膨胀

  • 7

我们遇到了一些问题,导致我们无法将本地 SQL 2016 Std Ed 迁移到 Azure SQL 托管实例业务关键层,我想知道是否有人遇到过类似的问题并能为我们提供建议。我们的问题是:

  1. 最令人头疼的问题是,至少有十几个存储过程和其他查询的查询计划初始编译时间过长(40 秒到 174 秒……我甚至见过长达 725 秒的例子!)。这导致应用程序频繁且随机超时,因为大多数都设置为默认的 30 秒。需要澄清的是,这不是过多的重新编译,而是查询计划中的编译时间非常长。

https://erikdarling.com/are-long-compile-times-bringing-you-down/中的查询和信息对于识别这些查询非常有帮助(我也读过https://littlekendra.com/2024/03/05/long-compilers-who-time-out-not-in-query-store/)。我们也看到了一些编译超时:https://www.brentozar.com/blitzcache/compilation-timeout/。

我们正在尝试调整这些查询并降低其复杂性,因为我们被告知这应该会减少编译时间。几个月来,我们还尝试将 AZ MI 层升级到业务关键层,添加 vCores,并调整实例和数据库设置。

我们已经与 Microsoft 合作了几个星期的 Sev B 案例,并收到了一些提示,但仍然没有解决方案。3 级支持建议确保编译超时查询没有强制计划,因为计划强制允许 SQL 优化器花费比正常时间长 3 倍的时间进行编译,这会增加超时的可能性。唯一强制计划的是自动调整,它仅适用于 MI 的 FORCE_LAST_GOOD_PLAN 选项,请参阅https://learn.microsoft.com/en-us/sql/relational-databases/automatic-tuning/automatic-tuning?view=sql-server-ver16和https://learn.microsoft.com/en-us/azure/azure-sql/database/automatic-tuning-overview?view=azuresql。我们根据他们的建议关闭了 FORCE_LAST_GOOD_PLAN,这有助于解决一些较长的编译时间问题,但不是全部。我们不会使用计划指南 (USE PLAN N'<xml_plan>') 强制执行计划,也不会在查询存储中手动强制执行。他们建议调整查询以降低其复杂性,如果关闭 FORCE_LAST_GOOD_PLAN 不起作用,则运行 DUMP。我希望安排与他们的性能团队进行工作会议来解决这些问题。

更新:在 5 月 28 日与 3 级支持人员通话期间,我们注意到,即使是 SELECT COUNT(*) FROM Table 等一些简单查询也使用了 OptimizationLevel = FULL 而不是 TRIVIAL。3 级支持人员表示,我们无法更改任何设置来影响这一点,但会向产品团队提及此事。

  1. 与 SQL 2016 Std Ed 中的相同代码相比,我们的分区维护作业(执行 ALTER PARTITION SPLIT)在 MI BusCrit 中的运行时间更长(几天到几周) 。它还会在处理过程中占用数据(和日志)文件中大量额外的使用空间,而这在 SQL 2016 中不会发生,例如在作业运行时,52 GB 的数据库增长到 588 GB!膨胀(和性能?)可能部分与加速数据库恢复 (ADR) 有关,因为它在 SQL 2019+ 和 AZ MI 中:Azure SQL 托管实例与本地 SQL Server 中的表大小(另请参阅https://learn.microsoft.com/en-us/sql/relational-databases/accelerated-database-recovery-concepts?view=sql-server-ver16)。

我们正在审查我们继承的算法,因为它似乎没有遵循https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-partition-function-transact-sql?view=sql-server-ver16中的最佳实践“始终在分区范围的两端保留空分区。保留两端的分区以确保分区拆分和分区合并不会引起任何数据移动。分区拆分发生在开始时,分区合并发生在结束时。避免拆分或合并已填充的分区。拆分或合并已填充的分区可能效率低下。它们效率低下,因为拆分或合并可能会导致多达四倍的日志生成,也可能导致严重的锁定。”但我们很困惑,为什么相同的代码在 MI 中运行时间更长,并且过度膨胀数据文件,而在 SQL 2016 Std Ed 中却没有。

我们考虑的另一个建议是使用 SQL 迁移到 Azure VM,但这将使我们的重新平台启动时间增加数月,以设置、测试和运行此环境,因为我们现在没有任何 Azure VM。我们还必须运行修补、备份等。

非常感谢你的帮助!Mike

execution-plan
  • 3 个回答
  • 305 Views
Martin Hope
Mike Petrak
Asked: 2015-10-14 08:03:30 +0800 CST

SQL Native Client 和网络断开连接

  • 2

如果出现 999 错误等瞬时网络断开连接,SQL Native Client 是否支持在驱动程序级别通过网络维护持久连接?我们的应用程序是用 PowerBuilder(版本 12.5 和 6.5)编写的,支持 SQL Server 2005 - 2014 和 Express Edition - Enterprise Edition。

我在http://blogs.msdn.com/b/sql_protocols/archive/2006/03/09/546852.aspx上阅读了 KeepAlive 属性,https://technet.microsoft.com/en-us/library/ms190771 (v=sql.120).aspx和http://www.databaseskill.com/2357386/。这对这种情况有帮助吗?

我还查看了 Microsoft 站点https://msdn.microsoft.com/en-us/library/ms130822(v=sql.120).aspx,其中列出了所有 SQL Native Client 连接字符串属性。我找到了 Failover_Partner,但它用于数据库镜像,我找到了 MultiSubnetFailover,但它用于 Always On Availability Groups (AG)。

我还查看了http://www.connectionstrings.com/sql-server/。

谢谢!迈克佩特拉克

sql-server network
  • 1 个回答
  • 714 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve