performance - Sybase TEXT与Oracle CLOB的性能

标签 performance oracle jdbc sybase clob

我们正在将数据库从Sybase转换为Oracle,并且遇到了性能问题。在Sybase中,我们有一个TEXT字段,并在Oracle中用CLOB替换了它。

这就是我们访问Java代码中数据的方式:

while(rs.next()) {
  String clobValue = rs.getString(1);  // This takes 176ms in Oracle!
  .
  .
}

该数据库遍及全国,但Sybase及其对TEXT数据的检索仍然没有任何性能问题。

我们可以采取一些措施来提高性能吗?

最佳答案

其他一些选择:

LOB列是在线存储(在数据行中)还是线外存储(在单独的位置)?如果LOB列较小(小于4k),则可以使用ENABLE STORAGE IN ROW子句告诉Oracle在可能的情况下在线存储数据。

如果您的LOB较大且经常使用,它们是否存储在缓冲区高速缓存中? 10g中的默认值是LOB为NOCACHE,这意味着针对它们的每个I/O操作都涉及到对数据库的直接读取,这是一个同步磁盘事件,可能很慢。数据库跟踪将显示对direct path read / direct path write事件的大量等待。

Oracle Application Developer's Guide-Large Objects的This chapter将是有值(value)的阅读。

关于performance - Sybase TEXT与Oracle CLOB的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751000/

相关文章:

C++:函数包装器是否与内联一起工作?

java - 将字节数组作为参数传递给oracle中的存储过程

java - 如何使用 java 从 oracle blob 检索 zip 文件?

java - ValidationException异常描述: Cannot acquire data source [jdbc/MyDataBase]

java - 为什么 Java 中的确定性算法会在不同的时间运行?

performance - 为什么 hadoop map 任务上的更多内存会使 mapreduce 作业变慢?

c - 将 0 映射到任何非零值同时保留其他值的无分支方式?

sql - 如何在 Oracle SQL 中选择直到特定字符的子字符串?

java - ORA-29532 : Java call terminated by uncaught Java exception: java. lang.NoClassDefFoundError

java - hibernate 不只存储午夜的详细日期