`
hgq0011
  • 浏览: 557629 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

提高查询数据的性能历险记

阅读更多
                                    提高查询数据的性能
     我负责的那个项目采用了webwork + spring + hibernate 的架构,用到了3个数据库.现在已经正是使用了,先庆祝一下.用户反映速度很慢,说有时一个查询要等10秒左右,妨碍了他们的工作.他们这么一说,我就 开始找原因了.我以为是用了hibernate引起的,所以请教了我的朋友--waterYe. 问了他一些关于怎样优化hibernate.比如说用lazy load .可hibernate 3.0默认方式是lazy load.而且表间的关系是手工控制的.(好像对字段也能lazy load,不过我还没有实践过).然后我把配置文件发给他让他给我看看.waterYe很快就发现了问题,他发现我没有使用数据库连接池(这个我一直到用了,怎么可能没有呢?).原来我在appllicationContext-hibernate.xml文件中用了"org.springframework.jdbc.datasource.DriverManagerDataSource"这个并没有提供连接池的功能.这个是我没有注意到的.我是用equinox新建的项目,我以为它用了连接池.以后学习过程中真要把它们吃透,一定要知其所以然.最后我改用了BasicDataSource.请参考http://www.is.pku.edu.cn/blog/?date=2004-12-29&id=2&m=display  .Water Yer 建议我用WEB服务的JNDI的方式会好些. 他还发现了一个问题就是我把很多ArrayList等数据放在了session中(其实我知道这样做肯定不好,可我不知到怎样把Action中的ArrayList的数据传的JSP页面中,所以就用了session) ,朋友建议我改成放到request中(不知有没有更好的方法).可修改完这些查询的性能没有明显的提高.
      这个系统是一个比较重要的系统,对性能要求比较高.所以大家都很重视.所以我们的老大,也在为我想一些办法.今天一上班,就把我叫过去,一起讨论数据库优化.其实我也有想到过数据库方面肯定也是影响性能之一,还有就是网络阻塞.由于上星期五我就请假回家,时间非常紧张所以也没有忙过来.
    老大说可能把存储过程改成视图可能会好点.然后我俩就把存储过程改成了视图来比较到底那个运行的速度快.可我们发现改完的效果不是很明显(差不多).由于连接到3个数据库,而且他们的数据也很多,请求处理的业务逻辑也很复杂,用到了5个存储过程.老大又提出,是不是创建索引可能会又效呢?我们又开始对所有表创建索引(请参考http://www.vckbase.com/document/viewdoc/?id=1307).果真查询的速度很快了.客户也满意了,当然我也非常的高兴.又解决了一个问题.
   所以遇到问题一定要从多方面来考虑,仔细想一想,多测试,多找资料,相信问题一定有解决办法.
分享到:
评论

相关推荐

    小飞侠历险记

    同时,资深开发者也能从中学习到如何优化代码、提高性能,以及如何将复杂的游戏逻辑转化为简洁易懂的代码。 总之,《小飞侠历险记》作为一款教学性质的小游戏,是学习C++编程和游戏开发的绝佳实践案例。通过对这个...

    捉虫历险记——常见C++Bug大围剿.rar

    "捉虫历险记——常见C++Bug大围剿"这个压缩包文件,显然是为了帮助开发者们更好地理解和处理C++编程中常见的错误。 C++的Bug通常可以分为几大类:语法错误、逻辑错误和运行时错误。语法错误是最直观的,编译器会在...

    H5小游戏源码 跑酷历险记.zip

    【H5小游戏源码 跑酷历险记.zip】是一个包含H5游戏源代码的压缩包,其中的游戏名为“跑酷历险记”。H5小游戏是指基于HTML5技术开发的轻量级游戏,通常可以在网页上直接运行,无需安装任何额外的应用程序。这种类型的...

    C#小游戏 《多多历险记》

    通过《多多历险记》这款游戏,开发者可以学习到C#游戏开发的基本流程和技巧,包括如何设计游戏逻辑、实现交互、处理碰撞以及优化游戏性能。同时,也可以了解到C#语言在游戏开发中的实际应用,提升编程技能。

    微信HTML5在线朋友圈游戏源码带安装部署教程-跑酷历险记.zip

    本源码包“跑酷历险记”提供了这样一个游戏的完整源代码,旨在帮助开发者理解和创建类似的游戏。 1. HTML5基础:HTML5是超文本标记语言的第五个版本,其引入了多项新特性,如离线存储(Application Cache)、拖放...

    Redis - Redis深度历险.pdf.zip

    通过深入学习《Redis深度历险》,读者可以掌握如何高效利用Redis的特性来解决实际问题,如构建高性能的缓存系统、实现分布式锁、优化数据存储结构等。这本书可能还会涵盖最佳实践、性能调优和故障排查等内容,帮助...

    SQLBoy 存储过程之历险记(二)

    在SQLBoy的存储过程历险记(二)中,我们主要探讨了如何使用Oracle数据库的存储过程来处理数据。在这个示例中,作者创建了一个名为`jhxtdb_t_ZQ_2020_5_9`的存储过程,其目的是从`student`和`score`表中提取特定条件...

    Redis深度历险:核心原理和应用实践

    3. 主从复制:Redis支持主从复制,通过复制机制,可以创建多个副本,提高读取性能和容错性。主服务器负责数据写入,从服务器负责读取,保证数据一致性。 4. 持久化策略:Redis的RDB和AOF持久化策略各有优缺点。RDB...

    Redis进阶(深度历险)

    - 复制:主节点的数据会被同步到从节点,提高读取性能和容灾能力。 - 主从切换:在故障时可以自动或手动将从节点提升为主节点。 4. **事务(Transactions)** - Redis的事务可以批量执行多个命令,保证原子性。 ...

    PHP:我PHP历险记

    我的“PHP历险记”便从接触这门语言开始,逐步深入,探索其奥秘的过程。 PHP起初是Personal Home Page的缩写,由Rasmus Lerdorf于1995年创建,后来演变为“PHP: Hypertext Preprocessor”,形成了如今我们熟知的...

    j2me摩迦历险记源代码

    《j2me摩迦历险记源代码》是一款基于Java ME(J2ME)平台开发的手机游戏,它展示了在移动设备上实现游戏娱乐的可能性。Java ME是Java技术的一个子集,专门用于嵌入式设备,如早期的智能手机和平板电脑,提供了跨平台...

    精品--读《Redis 深度历险》学习笔记与实践.zip

    合理设置 maxmemory、选择合适的数据结构、避免阻塞操作等,可以进一步提高 Redis 的性能。 通过《Redis 深度历险》的学习和实践,读者不仅能掌握 Redis 的基本操作,还能深入了解其内在原理和高级特性,为实际项目...

    Java深度历险

    学习如何通过JVM调优提高程序性能。 9. **Java标准库**:熟悉Java的常用库,如util、io、net和sql等包,以及如何利用这些库进行日常开发工作。 10. **异常和日志记录**:了解如何正确使用异常来报告程序中的问题,...

    Redis深度历险:核心原理和应用实践1

    2. 缓存:由于Redis的读写速度极快,常用于缓存热点数据,提高系统性能。 3. 消息队列:通过发布/订阅模式或列表数据结构实现消息传递。 4. 计数器:利用自增操作记录网站访问量、用户行为等。 5. 分布式锁:通过...

    Redis深度历险:核心原理和应用实践.zip

    - **缓存**:Redis的高速读写性能使其成为理想的缓存解决方案,可以缓解数据库的压力,提高Web应用的响应速度。 - **消息队列**:通过发布/订阅模式或列表数据结构,Redis可以实现简单的消息队列功能,用于解耦...

    leetcode_pset:PythonC ++中的LeetCode历险记

    《Python与C++在LeetCode中的编程历险》 在这个专题中,我们将深入探讨使用Python和C++这两种语言解决LeetCode上的算法问题。LeetCode是一个知名的在线编程平台,它提供了丰富的算法题目,帮助开发者提升编程技能,...

    读《Redis 深度历险》学习笔记与实践.zip

    《Redis 深度历险》是一本深入探讨Redis数据库特性和实际应用的书籍,而“redis命令实践”则是从这本书中提炼出的实际操作部分。Redis作为一个高性能的键值存储系统,广泛应用于缓存、消息队列、计数器等多种场景。...

    如何减少程序中的bug.pdf

    这种类型的测试可以帮助识别性能瓶颈和潜在的稳定性问题。 #### 三、编码规范与静态分析工具 **1. 编码规范** 遵循一致的编码规范不仅可以提高代码的可读性和可维护性,还可以避免一些常见的编程错误。例如,使用...

    ASP.NET Framework深度历险(完整版本).pdf

    11. **性能优化**:包括缓存管理、资源压缩、异步编程和线程管理,以提高ASP.NET应用程序的性能。 12. **错误处理与调试**:理解和使用Visual Studio的调试工具,以及如何处理和记录应用程序中的异常和错误。 13. ...

Global site tag (gtag.js) - Google Analytics