`
leon1509
  • 浏览: 538194 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)提高Grails应用的查询性能

阅读更多
转载地址:http://www.groovyq.net/content/%E6%8A%80%E5%B7%A7%EF%BC%9A%E6%8F%90%E9%AB%98grails%E5%BA%94%E7%94%A8%E7%9A%84%E6%9F%A5%E8%AF%A2%E6%80%A7%E8%83%BD

想提高你的Grails应用的性能么?Schneide Blog上提供了一个简单而又容易让人忽视的技巧。

事情一开始是这样子滴:作者遇到了一个奇怪问题:重复执行查询,例如:

Child.findAllByParent(parent)


却发现花费的时间一次比一次多,比如第一次查询花费40ms,第二次就多了1ms,依次类推。想尽了办法,如:加索引、清空会话、使用HQL,问题依旧!

最后发现使用如下设置:
session.setFlushMode(FlushMode.COMMIT)

问题解决了,而且还比原来快了10倍!原来,Grails里flush的缺省方式为Auto,按照Hibernate的文档(或见Java Persistence with Hibernate),若flush模式为Auto,Hibernate有可能会在某些查询前提交数据,尤其是当会话中的内存对象的变化可能影响查询结果的时候。Hibernate的论坛里也有相关的jira issue。

文后的评论里,Lari H给出另一种设置flush模式的方法(DataSource.groovy中):

hibernate {
    flush.mode='commit'
}

此外,他还给出了另外2个跟Hibernate性能相关的链接(这里和这里)。其中的主要做法都是采用readOnly来提高性能,此时的Hibernate将不会进行“Dirty Check”,从而避免了上面的问题。
分享到:
评论

相关推荐

    grails框架数据查询

    Grails是一个基于Java平台的开源Web应用框架,它采用Groovy语言,提供了MVC(Model-View-Controller)架构模式,旨在简化开发过程,提高开发效率。在Grails中,数据查询是核心功能之一,允许开发者高效地与数据库...

    Grails企业web应用开发与部署

    2. 构建可部署包:使用`grails war`命令生成WAR文件,包含了Grails应用的所有依赖。 3. 部署:将WAR文件上传至服务器的Web容器目录下,如Tomcat的webapps目录,然后启动或重启容器。 4. 配置:根据应用需求,可能...

    grails-perf-testapps:用于性能测试的简单 Grails 应用程序集合

    `grails-perf-testapps` 提供的这些简单应用可以帮助开发者了解 Grails 在不同场景下的性能瓶颈,从而进行必要的优化,提高应用的稳定性和用户体验。 **性能测试的方法** 1. **负载测试**:模拟多个并发用户访问...

    Grails GORM查询.pdf

    Criteria查询是一种类型安全的查询方式,可以避免SQL注入的风险,而且在需要处理复杂查询时,使用HQL则可以提供更为直接和高效的SQL性能。 在实际应用中,GORM通过其提供的各种查询方法和操作符,使得数据查询变得...

    Grails入门指南 -- 针对grails1.0.4更新

    - IntelliJ IDEA 8.1用于开发Grails应用,提供集成开发环境支持。 - **入门示例**: - **RaceTrack应用**:本书通过一个名为RaceTrack的应用实例介绍了Grails的基本用法。包括应用的创建、领域模型定义、控制器...

    grails 3.3.2 资源下载

    Grails 3.3.2是该框架的一个稳定版本,提供了许多改进和新特性,以提升开发者的体验和应用性能。 1. **Groovy语言**: Grails 的核心就是Groovy语言,它是一种动态、类型安全的编程语言,与Java语法兼容,但更加简洁...

    grails敏捷开发

    创建Grails应用非常简单,只需执行`grails create-app`命令,并提供应用的名称。这将生成一个包含基础目录结构的项目。接下来,你可以使用IDE如IntelliJ IDEA或Eclipse集成Grails插件进行开发,或者使用命令行工具...

    grails-2.4.4

    这极大地提高了开发效率,让开发Grails应用变得简单易行。 **3. Grails 2.4.4的改进与新特性** - **性能提升**:2.4.4版本对核心框架进行了优化,提高了应用的启动速度和运行时性能。 - **Groovy升级**:与Groovy...

    the definitive guide to grails 2

    这使得Grails应用能够轻松地适应全球市场的需求,为不同地区的用户提供本地化的体验。 #### Ajax支持 Grails框架集成了对Ajax的支持,使得开发者可以轻松地创建异步Web应用程序。通过Ajax,Web应用可以实现无刷新...

    Grails入门指南-中文版

    #### 四、创建第一个Grails应用 **1. 创建项目** - 使用命令行工具创建一个新的Grails项目。 - 示例命令:`grails create-app myapp` **2. 领域模型** - 定义应用程序的核心实体(例如User、Product等)。 - ...

    Grails Jquery 集成代码

    要在Grails应用中使用JQuery,首先需要添加相应的依赖。在`grails-app/conf/BuildConfig.groovy`文件中,找到`dependencies`块,添加JQuery的库。例如,你可以使用CDN链接或者通过Bower或npm安装后将其作为本地资源...

    grails-1.2.2.zip

    总的来说,Grails 1.2.2是Grails框架历史上的一个重要里程碑,它在提升开发效率和应用性能上做出了显著贡献。无论你是初次接触Grails的新手,还是经验丰富的老手,都可以从中受益,享受更高效的Web开发体验。

    Grails 的过滤器(Grails Filters)

    通过合理地利用 Grails 过滤器,开发者可以有效地编写出整洁、可维护的代码,同时提高应用的安全性和性能。 总结来说,Grails 过滤器是 Grails 框架中一种强大的工具,它们提供了一种优雅的方式来处理应用程序的...

    grails-5.1.2.zip

    Grails 是一个基于Groovy语言的开源Web应用框架,它构建于Java平台之上,旨在简化开发过程并提高生产力。在Grails 5.1.2这个版本中,我们看到一些关键特性和改进,这些特性有助于开发者更加高效地构建动态、灵活的...

    grails 中文文档+grails-fckeditor-0.9.5.zip插件

    FCKEditor是一款著名的在线文本编辑器,grails-fckeditor-0.9.5插件则是将其集成到Grails应用中的解决方案。以下是关键点: 1. 安装与配置:在Grails项目中添加插件依赖,然后通过配置文件调整编辑器的参数,如默认...

    grails-4.0.4.zip

    这使得Grails应用可以快速启动并运行,无需额外配置复杂的服务器环境。 3. **GORM(Grails Object Relational Mapping)**:GORM是Grails的持久化层,提供了对数据库操作的便捷支持。它支持Hibernate和JPA,可以...

    Grails1.1中文文档.rar

    同时,通过实践创建简单的Grails应用,了解控制器、服务、领域模型的创建和交互,以及插件的使用。此外,深入研究URL映射和GSP标签库,能让你更好地利用Grails构建高效、可维护的Web应用。 通过阅读《Grails1.1中文...

    Grails 下拉框联动最优实现

    "Grails下拉框联动最优实现"这个主题聚焦于如何在Grails应用中优雅地实现下拉框(Dropdown)的联动效果,这种效果常见于表单中,例如一个下拉框的选择会动态更新另一个下拉框的选项。 下拉框联动的核心是前端的交互...

Global site tag (gtag.js) - Google Analytics