2011-05-30 88 views
0

我正在运行一个用grails将信息从电子表格加载到数据库的过程。我不明白这个性能问题

我的本地机器有4GB RAM和iCore7 1.73GHz的处理器 服务器该机拥有2GB内存和英特尔E7400 2.8GHZ双核 都与500GB硬盘

下面你可以看到时间,以秒将电子表格中的不同信息加载到数据库中。

SERVER UBUNTU 9.04 64BIT 

LOAD DICTIONARY TABLES STARTING... 
LOAD DICTIONARY TABLES : TOTAL Processing time = 5.31 
2011-05-30 11:49:39,210 [main] DEBUG dataImport.CatalogueDataLoader - LOADING CATALOGUE... 

2011-05-30 11:49:39,582 [main] DEBUG dataImport.CatalogueDataLoader - CATALOGUE LOAD : TOTAL Processing time 0.371 


LOCAL UBUNTU 10.10 64BIT 

LOAD DICTIONARY TABLES STARTING... 
LOAD DICTIONARY TABLES : TOTAL Processing time = 32.641 
2011-05-30 12:36:38,875 [main] DEBUG dataImport.CatalogueDataLoader - LOADING CATALOGUE... 

2011-05-30 12:36:40,214 [main] DEBUG dataImport.CatalogueDataLoader - CATALOGUE LOAD : TOTAL Processing time 1.338 

CATALOGUE LOAD : TOTAL仅仅是1号线的电子表格,但我必须加载7K左右线,所以时间差是很重要的。在我的机器上花费了1个多小时,而在服务器上只花了10分钟。我认为这没有意义。

有人可以帮助我了解这一点,也许建议一些解决方案呢?

+0

JVM内存设置,不同的数据库(外部vs内存本地),不同的JVM,从本地机器上的其他应用程序加载... ...? – Ruben 2011-05-31 05:59:40

+0

向我们展示您的代码,然后我们可以提供帮助! – Chris 2011-05-31 08:47:22

回答

4

在你的问题中没有很多关于你在加载过程中可以做什么的问题的细节,但我敢打赌你并没有清理/清除休眠会话,并且正在使用相同的休眠会话您正在导入的所有项目。我有一个blog post for investigating batch import performance in grails,你可能会得到一些里程。