sql - 从远程(链接)SQL 服务器选择记录时,瓶颈在哪里/有哪些陷阱?

标签 sql sql-server tsql linked-server wan

我在一个卫星办公室,需要从我们的主办公室提取一些数据以在我们的内部网上显示。我们在这两个地点都使用 MS SQL Server,并且计划在我们的卫星办公室中创建一个指向主办公室的链接服务器。我相信两者之间的连接是 VPN 隧道(这听起来对吗?我知道什么,我是一名程序员!)

我担心在可能较慢的连接上产生大量流量。我们将能够访问总部服务器上的 SQL View 。一旦运行选择查询,数据并不多(约 500 条记录),但在没有查询的情况下 View 会很大(约 30000 条记录)。

我假设在链接服务器上运行查询只会通过网络返回结果(而不是本地查询的整个 View )。在这种情况下,主要瓶颈很可能是连接本身(假设 View 已索引)等。是否还有我应该注意的其他问题或潜在瓶颈(可能基于我构建查询的方式)?

最佳答案

根据您的解释,您的连接可能是瓶颈。

此外,您还可以考虑在卫星位置缓存数据。
该决定将取决于以下因素:
- 主数据库中有多少行以及数据更新的频率
- 您需要在卫星位置加载相同数据集的频率

两条边的示例:

  1. 数据是静态的或相对静态的 - 仅插入到主数据库中。在卫星定位中,用户经常一次又一次地查询相同的数据。在这种情况下,在卫星位置本地缓存数据是有意义的。

  2. 数据不稳定,会进行大量更新或/和删除。卫星位置的用户很少查询数据,而且每次查询时,位置条件总是不同。在这种情况下,缓存没有意义。如果连接速度很慢并且经常发生更改,您可能最终永远不会与主数据库同步。

缓存的另一个优点是可以实现数据压缩,这将减轻慢速连接的不良影响。

如果您选择在本地位置缓存,则有很多选项,但我相信这将是另一个主题。

[编辑]

关于压缩:您可以使用压缩事务日志传送。在 SQL 2008 中,仅企业版支持压缩。在 SQL 2008 R2 中,它从标准版本开始可用。 http://msdn.microsoft.com/en-us/library/bb964719.aspx .

您可以在发送事务日志之前使用您喜欢的任何压缩库实现自定义压缩。

关于sql - 从远程(链接)SQL 服务器选择记录时,瓶颈在哪里/有哪些陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918415/

相关文章:

sql-server - SQL Server : table with foreign key to itself with cascade delete

mysql - 优化对大型数据集的查询——使用 JOIN 还是 IN?

sql-server - SQL 服务器 : Convert nulls into values when inserting fails - can I force this?

sql - 甲骨文 : Create table in another schema and grant select and insert on it from the same schema

sql-server - 多对多表上的递归父级到子级到父级

sql - 重新获得失去的身份值(value)

sql-server - 如何将 SSMS 脚本表编辑为模板?

sql-server - 即使使用 MAX(id) 也无法插入重复的键行

sql - 如何替换 Postgres 中的表?

mysql - 如何在一定时间范围内从其他表中选择具有 COUNT 行的表?