gpt4 book ai didi

mysql - 如何使远程 MySQL 连接更快?

转载 作者:行者123 更新时间:2023-11-30 23:33:07 24 4
gpt4 key购买 nike

我有一个 Java 应用程序,它可以解析文件并将我需要的数据存储在 SQLite 数据库中。

我试图让它将数据存储在我主机服务器上的远程 MySQL 数据库中。

我重写了具有不同语法的查询,但我仍然有一个问题:它比我使用 SQLite 数据库在本地执行时慢得多。这是我必须忍受的事情,因为一个是本地连接而另一个是远程连接,还是在继续之前我应该​​知道一些事情?

举个例子,当我使用 SQLite 数据库时,解析 636 个文件并存储我需要的所有数据(有些数据没用,我必须对其中一些进行排序等)需要 2.5 分钟。这大约是每秒 4.24 个文件。平均而言,当我使用 MySQL 数据库时,每个文件大约需要 15 秒,因此使用 MySQL 数据库需要大约 63 倍的时间。

我认为主要问题可能是,但我不知道如何解决:每个文件平均有 190 个插入。由于文件是保龄球中心的统计表,每场比赛都是一行(每个联赛 60 名球员乘以 3 场比赛),再加上一些检查以查看联赛表、时间表等是否存在联赛,我真的不能只需减少插入,因为所有信息都很重要。

我认为,如果我可以将游戏部分的所有插入内容归为一个大插入内容,那将大有帮助,但我不知道这是否可能/如何可能/是否值得,或者问题是否出在其他地方.

我想知道我是否至少在正确的轨道上,或者我是否应该习惯我的应用程序花费那么多时间来存储数据,因为它是远程连接的。

最佳答案

由于没有人回复我的答案,而且我发现我可以做些什么来提高性能,我将把它张贴在这里,以便将来像我一样不了解批处理的人可以使用它.

我使用的是 PreparedStatement(但常规语句的效果相同),而不是执行通常的 ps.executeUpdate(); 来执行我的查询,我在不同的查询之间使用了 ps.addBatch();,然后在构建完查询并想对所有内容进行一个大的 INSERT 时使用 ps.executeBatch();批处理。

请注意,执行此操作时,如果您的连接名为 conn,则您应该在开始批处理之前执行 conn.setAutoCommit(false);conn。 commit();ps.executeBatch(); 之后。如果愿意,您可以在此之后将 autoCommit 设置回 true。

关于mysql - 如何使远程 MySQL 连接更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562716/

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