SQL Azure分页优化

时间:2016-09-25 16:24:06

标签: .net wpf azure azure-sql-database azure-table-storage

最适合这个问题的麻烦

使用Azure表存储,您只需要修复分区的密钥rownum。它们根据操作的大小和数量收费。

拥有一个带有WPF客户端和SQL数据库的LAN文档管理应用程序

将其带到Azure,我想最大限度地降低成本

大多数申请都是100,000个文件 但在高端可能是400万份文件

大多数SQL搜索都很便宜(0.1秒),但有些可能很昂贵(例如60秒)。

在LAN版本上,我所做的是返回100的详细信息但是10,000的原始标识符。因此,当客户端需要下一页的详细信息时,它只会发回下一个100的标识符(int)和一个非常便宜的详细查询。我没有保留前一页的详细信息,它会使用太多的客户端内存。当它达到10,000时,我会搜索下一个10,000。

在Azure环境中有任何改变的理由吗?我正在为带宽付费但是int非常小。我也在为SQL CPU和IO付费。如果我正在考虑向客户端发送100,000个标识符。

我查看了Table Storage,但是如果我有100个客户端每天进行100次搜索(有些会做),100,000,000次返回,则交易成本会增加(超过700美元),而表存储插入则相对较慢。该数据库仅为15美元。

我可以将结果存储在SQL表中 userID(smallint),rowNum(int),docIdentifier(int)
userID为rowNum的填充因子为50的聚簇索引 我的问题是有4,000,000个文件,1000个登录可以让我单独在那张桌子上16 GB

我在考虑一次向客户发送100,000个int 有更好的设计吗?

2 个答案:

答案 0 :(得分:1)

使用Azure的一个好处是您有多种存储数据的选择。从Azure表,文档DB,一直到SQL DB和SQL DW。每项服务都有很好的文档,描述了他们最擅长的方式。

由于您有选择,您可能希望在Azure中选择最便宜的存储选项。这将是表格。然而,正如你所指出的那样,最便宜的并不总是最容易搜索,而且这通常是SQL带来好处的地方。从SQL搜索/选择数据通常更容易。

因此,它需要在存​​储成本,数据吞吐量和易于访问/编程之间进行权衡。

答案 1 :(得分:0)

我想说Azure Table Storage是您最便宜的解决方案。关键是,你究竟会给你的用户带来什么回报?每次100个记录,每次100,000,我不确定您的用户是否会浏览每个页面。也许您应该考虑另一种报告信息的方式。