java - jdbc 性能

标签 java performance oracle jdbc

关于 JDBC 性能优化,我需要你们的帮助。我们的一个 pojo 正在使用 jdbc 连接到 oracle 数据库并检索记录。基本上,记录是电子邮件地址,基于这些地址将向用户发送电子邮件。这里的问题是性能。这个过程每个周末都会发生,记录数量非常庞大,大约有 10 万条。

性能很慢,让我们很担心。似乎每 1 小时从数据库中提取 1000 条记录,这意味着完成此过程需要 100 小时(这很糟糕)。请帮我解决这个问题。

数据库服务器和java进程在两个不同的远程服务器上。我们使用了 rs_email.setFetchSize(1000); 希望它会有所不同,但根本没有改变。 在服务器上执行的相同查询需要 0.35 秒才能完成。任何快速建议都会对我们有很大帮助。

谢谢, 阿默。

最佳答案

首先查看您的查询。分析它们。看看 SQL 是否可以变得更高效(即,向数据库询问您想要什么,而不是您不想要什么——这会有很大的不同)。还要检查您的 where 和 join 子句中的任何字段是否有索引。索引有很大的不同。但它不能只是任何索引。它们必须是好的索引(即构成索引的字段为数据库提供足够的唯一性以适本地检索内容)。与您的 DBA 合作解决这个问题。查找针对数据库的高运行时间或检查具有高 CPU 使用率的查询(即使查询运行亚秒级)。这些是可以杀死您的数据库的东西。

同样从代码的角度来看,检查您是否正在打开和关闭您的连接,或者您是否正在重新使用它们。也可以产生很大的不同。

这将有助于发布您的代码、查询、表格布局和您拥有的任何索引。

关于java - jdbc 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911227/

相关文章:

java - 如何使用 OpenAPI 3.0 创建同一请求的多个版本?

java - com.sun.tools.javac.code(javac 编译器)包中的这种奇怪语法是什么?它是如何工作的?

c# - 逐行读取文本文件的最快方法是什么?

javascript - 制作动画时防止 javascript gc

linux - 查找有关CPU负载类型的更多信息

oracle - crdb_oracle.dll 无法在 Crystal Reports 2008 中加载

java - 使用set Object()代替jdbc中的所有数据类型

java - InvalidDataAccessApiUsageException : Parameter value [. ..] 与预期类型不匹配 [java.util.UUID (n/a)]

java - 有这行代码和没有这行代码有什么区别? x = 5 之前的行;在 Starter() 方法中

sql - Oracle SQL : Calculate value using previous row