我们正在为我们的应用程序使用SQL Azure,并且需要一些关于如何处理扫描大量数据以进行报告的查询的输入。我们的应用程序都是读/写密集型的,因此我们不希望报表查询阻止其余操作。
为了避免长时间运行的查询导致的连接池问题,我们将查询数据库的代码放到一个辅助角色上。这仍然无法避免数据库被一堆只读查询所击中。
我们在这里缺少什么 - 我们可以设置一个只读副本,所有报告调用都会被点击吗?
任何建议都将不胜感激。
答案 0 :(得分:2)
查看SQL Azure Data Sync。它将允许您逐步更新报告数据库。
这里有几个让你入门的链接
http://msdn.microsoft.com/en-us/library/hh667301.aspx
http://social.technet.microsoft.com/wiki/contents/articles/1821.sql-data-sync-overview.aspx
我认为它仍然在CTP中。
答案 1 :(得分:2)
这个怎么样:
这可以防止长时间运行的查询阻止您的操作查询。这也将使您的报告得到一致的阅读。
答案 2 :(得分:1)
由于您正在谈论报告,我假设您不需要实时数据。在这种情况下,您可以考虑定期创建生产数据库的副本(例如,每12小时)。
在SQL Azure中,create a copy非常容易:
-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database1B AS COPY OF Database1A;
您的报告将在Database1B上发生,而不会影响实际的生产数据库(Database1A)。
答案 3 :(得分:1)
你说你有很多只读查询......是否可以缓存它们? (完美,因为它是只读的)
您使用的报告工具是什么?如果需要,您也可以输出缓存查询。