【问题标题】:Timeout during indexing view in Azure Search despite settings尽管设置,Azure 搜索中的索引视图期间超时
【发布时间】:2015-07-05 20:13:14
【问题描述】:

我正在使用 Azure 搜索索引器来索引 Azure SQL DB 中的视图。

我已经创建了数据源(视图)并在连接字符串中设置了此类设置 (...)Trusted_Connection=False;Encrypt=True;Connection Timeout=1200;" },

索引器仍然返回超时,我从 Azure SQL DB 日志中看到,索引器的查询在 30 秒后被取消:

  • 操作状态:取消
  • 声明:SET FMTONLY OFF;设置 NO_BROWSETABLE ON;SELECT * FROM [dbo].[v_XXX] ORDER BY [rowVersion] SET NO_BROWSETABLE OFF
  • 服务器持续时间:00:00:30.3559524

通过 SQL Server Mgmt Studio 运行相同的语句大约需要 2 分钟才能完成。

我想知道是否有任何其他设置(服务器或数据库)会覆盖我的连接超时首选项?如果是,那么为什么当我使用 SSMS 查询我的数据库时没有超时,而 Indexer 尝试索引视图时却有超时?

【问题讨论】:

  • 在我们可以增加命令超时之前,您可以尝试在 ROWVERSION 列上创建索引,只要您没有大量的行,这应该会加快查询速度。 ROWVERSION 样式列上的索引虽然很痛苦(由于每次更新都会更改给定记录所在的页面,因此它们会产生很多变化),但如果索引性能很重要,它可能是一种选择。

标签: sql-server azure azure-cognitive-search


【解决方案1】:

取消操作的超时是命令超时,不是连接超时。默认的命令超时时间过去是 30 秒,目前无法更改。我们已将默认命令超时值增加到更大的值(5 分钟),以在短期内缓解这种情况。从长远来看,我们将添加在数据源定义中指定命令超时的功能。

【讨论】:

  • 有关此功能的任何新闻。在为索引创建的视图非常大并且完整的“全选”需要 12 分钟以上时,我遇到了同样的问题。
  • 我们没有优先考虑此功能,因为在大多数情况下,客户能够创建索引来优化他们的查询。我们建议您尝试加快查询速度 - 如果这对您不起作用,请直接与我联系(通常的 Microsoft 域中的 eugenesh)。谢谢!
  • 感谢您的回复。我最终确实优化了查询(并删除了不相关的数据)。
  • 这会影响 Azure 自己的一些服务,例如当您尝试将 SQL DB 数据导入 Azure 搜索索引时(使用门户中的“导入”按钮)。 Azure 搜索使用提供的连接字符串,无法参数化命令超时,因此它最终会超时,几乎每次。即使在我的标准 S3 数据库(100 个 DTU)中也试过这个!现在不知道如何将我的数据导入 Azure 搜索... =/
  • 我们正在对超时进行自定义,因此客户可以将其从当前的 5 分钟值增加。这应该会在接下来的 3 周左右推出。
【解决方案2】:

现在索引器上有一个设置。有了它,您可以配置 queryTimeout。我想它是在几分钟内。我的索引器现在运行时间超过 20 分钟而没有错误。

    "startTime": "2016-01-01T00:00:00Z"
  },
  "parameters": {
    "batchSize": null,
    "maxFailedItems": 0,
    "maxFailedItemsPerBatch": 0,
    "base64EncodeKeys": false,
    "configuration": {
      "queryTimeout": "360"
    }
  },
  "fieldMappings": [
    {

更新:目前无法在 azure 门户上设置。您可以通过REST Api进行设置:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=[api-version]  
Content-Type: application/json  
api-key: [admin key]  

【讨论】:

  • 嗨@Magu,您如何使用 Azure 门户界面指定这一点?
  • @Diceyus 我更新了我的答案并包含了指向其余 api 文档的链接
【解决方案3】:

使用 REST API 链接 https://[SERVICE].search.windows.net/indexers/[Indexer]?api-version=2016-09-01 获取索引器定义,然后使用 POST 到同一地址进行更新。

参考MSDN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多