【问题标题】:Understanding Azure SQL Server External Tables了解 Azure SQL Server 外部表
【发布时间】:2019-04-22 14:25:48
【问题描述】:

我们正在尝试使用 Azure 的预览版 Elastic Query 创建跨数据库查询。因此,我们将创建一个外部表来进行这些查询。

不幸的是,我对查询的执行方式有些担心。我不希望查询或存储过程在运行时失败,因为数据库连接失败。我只是不明白外部表是如何工作的。

Azure's External Table docs 有很好的关于如何查询和创建表的信息。我只是找不到具体说明数据如何存在的信息。

Oracle 的外部表版本只是被引用的平面文件。 SQL*Loader 将外部文件中的数据加载到 Oracle 数据库的表中。我找不到任何关于 Azure 做同样事情的文档。 (是否暗示它们是相同的?这是一个愚蠢的问题吗?)

如果是这种方式(外部平面文件),当外部表被更新时,SQL Server 是否会更新平面文件以使我们的外部表保持最新?还是每次我想运行查询以获取最新信息时都必须再次删除/创建链接?

【问题讨论】:

  • 关于潜在的暂时性错误,如果我们在同一服务器上的两个数据库之间进行查询,如果两个数据库都可用,可能会出现哪些故障情况?我们正在尝试评估利用此功能带来的风险,以及查询是否可能由于与源数据库的底层连接而失败。

标签: sql sql-server elasticsearch external-tables


【解决方案1】:

根据 Microsoft 支持: 弹性查询基本上用作远程查询,这意味着数据不是存储在本地,而是每次运行查询时从源数据库中提取。当您对外部表执行查询时,它会连接到源数据库并获取数据。 话虽如此,您不必删除/创建链接。执行完这些步骤后,您可以访问水平分区表“mytable”,就好像它是本地表一样。 Azure SQL 数据库自动打开到物理存储表的远程数据库的多个并行连接,处理远程数据库上的请求,并返回结果。

使用此功能没有特定的风险,但它就像打开到源数据库的连接以便它可以提取数据一样。除此之外,执行远程查询时可能会出现一些缓慢,但不会导致数据库出现任何其他问题。 如果任何数据库不可用,使用受影响数据库作为源或目标的查询将遇到查询取消或超时。

【讨论】:

  • 1) 你是我这样自我记录的英雄。 2)查询缓存呢?我发现第一个查询很慢,但是如果我立即再次运行它,结果会立即返回。
猜你喜欢
  • 1970-01-01
  • 2016-11-24
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 2020-07-21
相关资源
最近更新 更多