没有合适的资源?快使用搜索试试~ 我知道了~
首页mysql如何处理大数据量的查询
mysql如何处理大数据量的查询

在实际的任何一个系统中,查询都是必不可少的一个功能,而查询设计的好坏又影响到系统的响应时间和性能这两个关键指标,尤其是当数据量变得越来越大时,于是如何处理大数据量的查询成了每个系统架构设计时都必须面对的问题。本文将从数据及数据查询的特点分析出发,结合讨论现有各种解决方案的优缺点及其适用范围
资源详情
资源评论
资源推荐

J2EE 综合:如何处理大数据量的查询
2005-07-14 08:00 来源:网管之家 bitsCN.com 字体:[大 中 小]
在实际的任何一个系统中,查询都是必不可少的一个功能,而查询设计的好坏又影响
到系统的响应时间和性能这两个关键指标,尤其是当数据量变得越来越大时,于是如何处
理大数据量的查询成了每个系统架构设计时都必须面对的问题。本文将从数据及数据查询
的特点分析出发,结合讨论现有各种解决方案的优缺点及其适用范围,来阐述 J2EE 平台下
如何进行查询框架的设计。
Value List Handler 模式及其局限性
在 J2EE 应用中,对于大数据量查询的处理有许多好的成功经验,比如 Value List
Handler 设计模式就是其中非常经典的一个,见图 1。该模式创建一个 ValueListHandler 对
象来控制查询的执行以及结果集的缓存,它通过 DAO(Data Access Object)来执行查询,并
将数据库返回的结果集(传输对象 Transfer Object 的集合)缓存起来,接下来的客户端查
询请求将直接从缓存中获得。它的特点主要体现在两点:服务器端缓存数据,每次只返回
客户端本次操作所需的数据,通过这两个措施来减少数据库的访问次数以及增加客户端的
响应速度,达到最优的查询效果。当然,这里面隐含一个前提就是客户端采用分页的方式
来浏览数据。关于该模式的详细介绍,请参考[Core J2EE Patterns]一书。
图 1:Value List Handler 类图
文章转载自网管之家:http://www.bitscn.com/plus/view.php?aid=21749
但是在实际的应用过程中,会发现该模式存在一定的局限性,其实可以说是该模式应用具
有一些前提条件:
1、由于缓存是以内存来换性能,这对于小数据量会工作得很好,但是如果结果集很大,内
存消耗将会非常严重。同时,消耗在处理结果集上的时间也会越来越长,比如要循环读取
记录集中的数据,然后依次填充每个传输对象,想想看几百万条数据这样处理起来肯定让
人不能忍受。过长的处理时间不仅降低反应速度,同时还会占用宝贵的数据库连接资源,
造成其它地方无连接可用。虽然,在 DAO 模式中利用 CachedRowSet,Read6Only6RowSet6
,RowSet6Wrapper6List 等策略(详见参考资料)来代替 Transfer6Object6Collection 策略,有
效地提高了处理速度,但是仍然存在着在大集合数据中进行定位、遍历等问题。试想一想


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论22