随着表格在Grails中增长,防止逐渐减慢行插入的最佳方法

时间:2012-09-24 03:54:45

标签: grails

我的Grails应用程序中有一张桌子正在变得相当大 - 大约100,000行,而且它每天增长大约10,000行。我注意到随着表的增长,插入越来越慢。我认为这与我的索引有关。解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

是的可能是索引,但通常最大的打击是因为hibernate会话膨胀,Ted Naleid描述得很好。如果这对您不起作用,请告诉我们您的情况,您是在进行批量插入,还是您的网站从不同的请求获得10000个插入等?

我通过一个简单的方法来解决这个问题,这个方法经常被Ted建议(例如每插入1000行)调用

def cleanUpGorm() {
        def session = sessionFactory.currentSession
        session.flush()
        session.clear()
        propertyInstanceMap.get().clear()
    }

答案 1 :(得分:0)

首先应确认是DB问题还是Grails / Hibernate问题;我将首先在Datasource.groovy中输出由Hibernate生成的SQL,并查看是否发生了异常。您还可以使用数据库供应商提供的各种SQL分析工具来查看其中发生的情况;例如,您可以从SQL生成EXPLAIN PLAN,以查看由于没有正确的索引,插入是否很慢。

在处理性能问题时,您希望深入了解并找到原因的具体证据,其他一切都只是猜测。