工程太大了，Domain类比较多，有办法加快一下run-app的启动速度吗?
李小翔
2014-03-20 14:48

内容列表

2014.03.20：升级到4.0.3后，废弃下面的 smartupdate 配置。
如果数据源中配置 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类的库表结构，开发效率自然也就提升了。