如何从Azure SQL生成报表而不会减慢系统速度?



我希望有人能给我一些建议,或者给我一些阅读材料。我为我的团队生成业务报告。我们有一个订阅网站,所以我们需要每天跟踪一些事情。其中涉及很多sql查询。问题是从实时数据库中查询大量信息会使我们的网站变慢或导致超时。

我目前的解决方案需要我每天运行bcp脚本,将新行复制到备份数据库(我纯粹用于报告)。然后我使用我制作的应用程序从那里生成报告。输出最终是一个或几个excel文件(为了业务团队的利益,这样他们更容易阅读)。在我的临时解决方案中有几个问题,

  1. 它只添加新行。不会复制对前一行的更新。和
  2. 这似乎不是很有效。

还有别的方法吗?我主要关心的是生成或查询不应该减慢我们的网站。

我可以为您想到三个选项,每个选项都可以有不同的实现方法。第一个是Azure SQL数据同步服务,第二个是AS COPY COPY操作,第三个是基于备份的。

如果你需要更多的实时报告功能,Sync Services是一个不错的选择;这意味着,如果您需要每天多次运行您的报告,几乎在任何时间,并且您需要尽可能实时地获取数据。同步服务可能会对主数据库的性能产生影响,因为它是基于触发器运行的,但使用此选项您可以选择要同步的内容;换句话说,您可以复制一组经过过滤的数据,从而将性能影响降至最低。然后,您可以报告同步数据库。这种方法的另一个重要缺点是,您最终将维护一个同步服务;如果您的主数据库模式发生更改,您可能需要重新创建部分或全部同步配置。

第二个选项,AS COPY OF,是一个简单的数据库复制操作,它实际上为您提供了主数据库的克隆。根据数据库的大小,这可能需要一些时间,因此测试是关键。但是,如果您正在为昨天的活动执行早晨报告,并且拥有最新的数据并不那么重要,那么您可以在几个小时后(或者在数据库上的活动最少的时候)按照计划运行as COPY操作,并在辅助数据库上运行报告。您可能需要构建一个小脚本,或者使用第三方工具来帮助您自动化此操作。这对主数据库的性能几乎没有影响。此外,AS COPY OF操作提供了事务一致性,如果这对您很重要的话。

第三个选项可能是使用备份机制(例如Azure Export或Azure备份工具),并在运行报告之前恢复最新的备份。这样做的好处是可以利用您的备份策略,而不需要额外的努力。

最新更新