我想得到所有表的所有表定义.而且我想快速完成它(它是我运行很多的脚本的一部分)
我使用的是oracle 11g,我有700个表.在普通的jdbc代码上需要4分钟,并且:
s = con.statement("select DBMS_METADATA.GET_DDL(object_type,object_name) from user_objects where object_type = 'TABLE');
s.execute();
rs = s.getResultSet();
while(rs.next()){
rs.getString(1);
}
Run Code Online (Sandbox Code Playgroud)
所以我想优化这段代码并达到20秒左右.
我已经通过创建14个线程达到40-50秒,每个线程打开一个与数据库的连接,并使用rownum上的mod读取部分信息.
但这还不够.
我正在考虑这些方向:
http://docs.oracle.com/cd/B10501_01/java.920/a96654/connpoca.htm#1063660 - 连接缓存.它可以通过用connectionCaching替换我的14个连接来帮助加快速度吗?
是否可以在KEEP缓冲区缓存区域中保留此函数访问的表?
无论如何索引这里的一些信息?
任何其他建议将不胜感激.
谢谢
即使表没有更改,是否需要始终获取DDL?否则只获取自上次检索以来ALL_OBJECTS.LAST_DDL_TIME已更改的那些表的DDL.
另一种选择是以一种能够一次获得多个表的方式编写自己的GET_DDL.
| 归档时间: |
|
| 查看次数: |
1409 次 |
| 最近记录: |