2011-01-14 60 views
0

我知道这是一个很广泛的问题,但这里是我的情况: 1)我一直的转储日志到MySQL(InnoDB的),每15分钟一个Hibernate支持java程序。它自己的日志数据是蛮力的(日志的100k-500k行)。MySQL查询优化---你的想法

2)目前有正在提供在前端两件事情,搜索和基于时间戳报告。

3)查询需要looong时间(10-15分钟),得到的结果回来,即使我已经把索引和做了解释,研究其中的服用时间等

4)在MySQL服务器级别,我增加了查询缓存等。

我跪下来解决这个问题。我需要知道有什么我可以做,以提高查询速度。

在此先感谢。 博

+0

顺便说一句我没有在前端使用hibernate来显示结果。这是一个简单的SQL查询包装在处理前端的PERL中。 – BoCode 2011-01-14 10:24:29

回答

0

使用与MySQL结合一个全文搜索引擎。

例如狮身人面像。每次插入循环后,让sphinx更新它的缓存。 比你可以使用sphinxse(在sphinx中使用sphinx作为存储引擎)来获得你的结果。 http://www.howtoforge.com/sphinx-as-mysql-storage-engine-sphinxse

另外10至15分钟,似乎很多时间500000个插入。 您应该使用MyISAM作为日志表的存储引擎,而不是使用INSERT DELAYED而不是INSERT(我不知道如何使用hybernate来存档)。