使用Java加速对MySQL的查询调用

时间:2013-02-26 00:39:29

标签: java mysql database jdbc

我正在解析一个由~600K行组成的XML文件。解析并将数据从XML插入数据库不是问题,因为我使用SAX解析并使用LOAD DATA INFILE(从.txt文件)插入到数据库中。使用JDBC在Java中填充txt文件。所有这些都需要5秒钟才能在数据库中填充。

我的瓶颈现在正在执行多个SELECT查询。基本上,每次我点击某个XML标记时,我都会调用SELECT查询从另一个DB表中获取数据。添加这些SELECT查询会使我的填充时间延长到2分钟。

例如:

  1. 我正在解析一个由书籍,文章,论文等组成的XML。
  2. 每本书/文章都有子元素,如isbn,title,author,editor,publisher。
  3. 在每个作者/编辑/出版商,我需要查询数据库中的表。
  4. 我说我遇到了带有价值Tolkien的作者标签。
  5. 我需要查询数据库中已存在的名为author_table
  6. 的表
  7. 查询是[从author_table中选择author_id,其中name =' Tolkien']
  8. 这就是瓶颈发生的地方。

    现在我的问题是:有没有办法加快速度?

    顺便说一下,我认为2分钟很长的原因是因为这是一个家庭作业,我还没有完成填充数据库。我估计整个数据库人口需要5分钟。因此,我正在寻求性能优化的建议。

1 个答案:

答案 0 :(得分:2)

您可以考虑的事情很少:

  • 使用connection pooling,这样每次执行查询时都不会创建/关闭新连接。这样做很昂贵
  • 通过SELECT查询缓存您获取的任何数据。是否可以事先预取所有数据,因此您不必在现场查询它们?
  • 如果您的SELECT很慢,请确保优化查询并且您有适当的索引以避免扫描整个表格
  • 确保use buffered IO in Java
  • 您可以将作品细分为多个帖子吗?如果是这样,创建多个工作线程以并行执行多个作业实例