0

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

4

2 回答 2

2

是的,可能是索引,但通常最大的打击是因为休眠会话过于臃肿,Ted Naleid 对此进行了很好的描述。如果这对您不起作用,请告诉我们有关您的情况的更多信息,您是在进行批量插入,还是您的网站从不同的请求中获得了 10000 个插入等?

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

def cleanUpGorm() {
        def session = sessionFactory.currentSession
        session.flush()
        session.clear()
        propertyInstanceMap.get().clear()
    }
于 2012-09-25T05:08:03.677 回答
0

您应该首先确认是 DB 问题还是 Grails/Hibernate 问题;我会首先输出 Hibernate 生成的 SQL,Datasource.groovy然后看看那里是否发生了任何异常情况。您还可以使用数据库供应商提供的各种 SQL 分析工具来查看那里发生了什么;例如,您可以EXPLAIN PLAN从 SQL 生成一个,以查看插入是否由于没有正确的索引而变慢。

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

于 2012-09-25T20:56:21.077 回答