我们有一个长时间运行的数据库查询,它填充一个临时表(我们不应该改变这种行为),这会导致600到1000万条记录,大约4到6 GB的数据。
我需要使用.NET Web API从SQL DB获取数据,并且API托管在IIS上。当请求从客户端发送到API时,查询将根据不同连接表中的数据量运行至少5分钟并填充临时表。然后,API必须从DB临时表中读取数据并将其发送到客户端。
如果没有阻止客户端,不丢失数据库临时表,而不阻止IIS,我们怎样才能达到这个要求?
想一想,如果我使用异步API,我能实现这一目标吗?
答案 0 :(得分:0)
你需要考虑的事情和你可以做的事情。
如果您作为API调用的结果启动查询执行,如果同时获得10次调用该端点会发生什么?死API,即将发生的事情。
您可能能够找到执行查询的不同触发器,因此您可以每天运行一次此查询,例如每4小时运行一次,然后将结果存储在永久表中。然后,API作业只会查看此表,而不是等待任何事情并返回一些数据。
您可以做的第二件事是仅返回您正在显示的屏幕所需的数据。你不会一次性显示4-6 gb的数据,我怀疑你在那里有一些分页,你可以稍微重新编写代码,一次只返回一页数据。
您没有说明您拥有哪种数据,但如果它不需要您经常运行该查询,那么您肯定可以进行一些改进。
< ----报告澄清后编辑---->
好的,既然这是一份报告,这是另一个想法。目的是确保压力不在api本身上,而这需要快速响应。让API接收带有所需参数的请求。将实际报告生成活动卸载到另一个服务。