gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:16 24 4
gpt4 key购买 nike

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

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

例如:

  1. 我正在解析由书籍、文章、论文等组成的 XML。
  2. 每本书/文章都有子元素,例如 isbn、书名、作者、编辑、出版商。
  3. 在每个作者/编辑/出版商处,我需要查询数据库中的一个表。
  4. 假设我遇到了值为 Tolkien 的作者标签。
  5. 我需要查询数据库中已存在的名为 author_table 的表
  6. 查询是 [select author_id from author_table where name = 'Tolkien']

这就是瓶颈发生的地方。

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

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

最佳答案

您可以考虑以下几点:

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

关于java - 使用 Java 加速对 MySQL 的查询调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15079301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com