Silverlight查询大数据出错?使用服务器端分页控件DomainDataSource

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 原文http://www.cnblogs.com/slmk/archive/2012/08/21/2649369.html DomainDataSource控件是很强大的,排序/分组/分页等都能轻松搞定。

原文http://www.cnblogs.com/slmk/archive/2012/08/21/2649369.html

 

DomainDataSource控件是很强大的,排序/分组/分页等都能轻松搞定。控件的使用可以参考MSDN的文档,已经很详细了。

值得注意的是:其分页功能是“服务器段分页”,而不是一次性将数据下载到客户端去分页。我做过试验,客户端分页如果数据超过3500行,直接报错 (使用的DataGrid和DataPager显示数据,WCF RIA Service传递数据)。而DomainDataSource控件采用服务器分页就没有此问题,并且分页是自动的,不需要自己手动Skip,Take 了。为了验证DomainDataSource控件是如何做到服务器端分页的,我们可以使用Sql Server Profiler工具,对传到服务器端的SQL语句进行跟踪。

1、打开Sql Server Profiler,新建跟踪,选择数据库,开始跟踪

2、示例程序很简单,使用的Sql Server 2005自带的AdventureWorks数据库。DomainService代码:

复制代码
[EnableClientAccess()] public class CustomerService : LinqToEntitiesDomainService<AdventureWorksEntities> {          public IQueryable<Customer> GetCustomer()         {             return this.ObjectContext.Customer.OrderBy(c => c.CustomerID);         } }
复制代码

如果要使用分页功能,必须OrderBy我们的数据。客户端数据:

复制代码
<Grid x:Name="LayoutRoot" Background="White">          <ria:DomainDataSource x:Name="Source" PageSize="15" LoadSize="30" QueryName="GetCustomer" AutoLoad="True">             <ria:DomainDataSource.DomainContext>                 <sv:CustomerContext/>             </ria:DomainDataSource.DomainContext>         </ria:DomainDataSource>         <StackPanel>             <data:DataGrid ItemsSource="{Binding Data,ElementName=Source}"/>             <data:DataPager Source="{Binding Data,ElementName=Source}"/>         </StackPanel>     </Grid>
复制代码

3、运行示例程序:将近2万行数据Silverlight没有崩溃的,这得益于"服务器端分页“,按需加载。

这里我们设置了每次查询加载30行数据,每页显示15行,也就是说每翻2页查询一次数据库。

4、多翻几页,然后查看Profiler的跟踪:

我们发现TOP (30) 了,并且每次分页执行了2次查询:

1)取得总查询行数,用于DataPager分页

复制代码
SELECT  [GroupBy1].[A1] AS [C1] FROM ( SELECT      COUNT(1) AS [A1]     FROM [Sales].[Customer] AS [Extent1] )  AS [GroupBy1]
复制代码

2)分页算法,使用了临时表,算法很通用,不知道性能如何?

复制代码
SELECT TOP (30)  [Extent1].[CustomerID] AS [CustomerID],  [Extent1].[TerritoryID] AS [TerritoryID],  [Extent1].[AccountNumber] AS [AccountNumber],  [Extent1].[CustomerType] AS [CustomerType],  [Extent1].[rowguid] AS [rowguid],  [Extent1].[ModifiedDate] AS [ModifiedDate] FROM ( SELECT [Extent1].[CustomerID] AS [CustomerID], [Extent1].[TerritoryID] AS [TerritoryID], [Extent1].[AccountNumber] AS [AccountNumber], [Extent1].[CustomerType] AS [CustomerType], [Extent1].[rowguid] AS [rowguid],  [Extent1].[ModifiedDate] AS [ModifiedDate], row_number() OVER (ORDER BY [Extent1].[CustomerID] ASC) AS [row_number]     FROM [Sales].[Customer] AS [Extent1] )  AS [Extent1] WHERE [Extent1].[row_number] > 30 ORDER BY [Extent1].[CustomerID] ASC
复制代码

5、如果我们点击DataGrid列头,DomainDataSource控件会自动进行服务器端排序,跟踪会发现上面的Sql语句Asc变成Desc了

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
18天前
|
SQL 大数据 数据挖掘
玩转大数据:从零开始掌握SQL查询基础
玩转大数据:从零开始掌握SQL查询基础
101 35
|
9天前
|
弹性计算 异构计算
阿里云服务器多少钱一小时?在哪查询1小时价格表?
阿里云服务器按量付费,1小时起计费。如2核2G的ECS经济型e实例仅0.094元/小时。不同配置价格各异,例如GPU计算型gn6v(64核256G)高达211.68元/小时。查询价格可访问阿里云ECS页面定制配置。包年包月更划算,2核2G服务器低至99元/年
|
1月前
|
SQL 分布式计算 数据挖掘
阿里云 MaxCompute MaxQA 开启公测,公测可申请 100CU 计算资源解锁近实时高效查询体验
阿里云云原生大数据计算服务 MaxCompute 推出 MaxQA(原 MCQA2.0)查询加速功能,在独享的查询加速资源池的基础上,对管控链路、查询优化器、执行引擎、存储引擎以及缓存机制等多个环节进行全面优化,显著减少了查询响应时间,适用于 BI 场景、交互式分析以及近实时数仓等对延迟要求高且稳定的场景。现正式开启公测,公测期间可申请100CU(价值15000元)计算资源用于测试,欢迎广大开发者及企业用户参与,解锁高效查询体验!
阿里云 MaxCompute MaxQA 开启公测,公测可申请 100CU 计算资源解锁近实时高效查询体验
|
3月前
|
存储 分布式计算 安全
MaxCompute Bloomfilter index 在蚂蚁安全溯源场景大规模点查询的最佳实践
MaxCompute 在11月最新版本中全新上线了 Bloomfilter index 能力,针对大规模数据点查场景,支持更细粒度的数据裁剪,减少查询过程中不必要的数据扫描,从而提高整体的查询效率和性能。
|
4月前
|
负载均衡 大数据
大数据散列分区查询频率
大数据散列分区查询频率
39 5
|
4月前
|
存储 大数据 数据管理
大数据分区提高查询性能
大数据分区提高查询性能
84 2
|
4月前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
133 9
|
4月前
|
存储 负载均衡 大数据
大数据水平分区提高查询性能
【11月更文挑战第2天】
96 4
|
9天前
|
域名解析 人工智能 弹性计算
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
72 10
|
19天前
|
弹性计算 运维 监控
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
83 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评