SQL Azure 联合和索引 - 性能说明

标签 sql azure-sql-database sql-azure-federations

我们目前有一个 SQL 联合数据库,分为 10 个分片,分为大致相等的数据部分,由客户端 ID 过滤。

目前我们在执行过滤查询时遇到性能问题,例如,对特定客户端运行查询可能需要 3 多分钟才能返回某些分片中的 4000 行。但是,在同一分片上的未过滤连接中运行完全相同的查询会在 4 秒内及时返回。一个值得注意的方面是经历放缓的分片往往包含更多的客户端,尽管数据较少。最有可能的性能抑制因素(我相信)是索引和与过滤/未过滤连接相关的东西。

四处搜索我没有找到太多关于跨分片的查询性能/分片上的特定索引策略的信息(除了 Azure 显然不支持索引 View )。我的印象(因此需要澄清)是索引应用于分片的所有成员,而不是逐个成员。

如果是前者,那么我们就有点麻烦了,除了重新分片这个特定的分片之外,考虑到唯一的区别是客户端的数量,而不是数据的大小,这是没有意义的。我们将要尝试的一些事情是将过滤器显式添加到索引中,甚至将过滤器添加到每个查询中。可以肯定地说,我们不高兴离开过滤连接。

有没有其他人遇到过这个问题,或者可以提供一些方向,即未过滤的连接显着优于过滤的连接?

提前致谢...

最佳答案

联盟中的索引按联盟成员逐个应用。如果您从单个索引成员开始并执行 SPLIT 操作,那么索引将自动应用于 SPLIT 的产品。但是如果在创建多个成员后应用了索引,则需要为每个成员显式添加索引。

所以希望你不是在泡菜。

由于 4 月份宣布的新 SKU 不支持该功能,因此您可能需要考虑联盟的替代方案。

关于SQL Azure 联合和索引 - 性能说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20100152/

相关文章:

azure - 从 "SQL Server"迁移到 "SQL Azure, while already using "Linq to SQL”

c# - 有没有办法知道当前网络角色包含多少个实例?

SQL Azure 联合数据库备份

sql - 使用TOP 5 Access SQL返回超过5个结果?

php - 按最近日期查询sql

c# - 我可以使用 ADFS 2.0 对特定用户进行 SQL Server 身份验证吗?

angularjs - 使用 Azure Cloud 作为 AngularJS 应用程序的后端

T sql 查询的 Azure SQL 警报

mysql - 左连接,但如果连接表包含条目则排除