欢迎进入Wiki » FAQ » 工程太大了,Domain类比较多,有办法加快一下run-app的启动速度吗?

工程太大了,Domain类比较多,有办法加快一下run-app的启动速度吗?

在2013-10-31 10:39上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

如果数据源中配置 dbCreate 为 update,Grails每次运行是都会运行一下数据库schema update,如果Domain类比较多,每次启动自然会比较慢,除非手动将 DataSource 里的 dbCreate 清掉,但是改来改去总是一件比较罗嗦的事情。

BroToolkit中增加了一个定制的配置,只需要在 Config.groovy 中增加一行:

bropen.toolkit.datasource.schema.smartupdate = true

且当 dbCreate 设置为 update 时,启动时会自动判断,如果自上次启动一来没有 Domain 类被修改,则不自动运行 schema update。
在我们的某个工程中,大概有不到350个Domain类,启用该配置后,能节省大概 1/3 的启动时间(数据库性能一般)。
注:目前有个限制,暂不支持多数据源,即如果配置了多个数据源,则该配置无效。

当然,影响启动的因素比较多,数据库表结构更新只是其中一个因素而已,而且run-app是支持热加载的,在很大程度上会削弱启动速度导致的影响。

BTW:
我们也对Domain类的热加载进行了改造,默认情况下Grails会自动更新所有数据库表结构(至少我们正在使用的2.2.x版本还是这样),此时会导致工程假死。
而安装BroToolkit插件(版本 2+即可)后,只会更新相关连的Domain类的库表结构,开发效率自然也就提升了。

在2013-10-31 10:39上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号