从spring-boot调用Pl / SQL过程的性能问题

时间:2019-02-19 06:31:04

标签: java spring oracle spring-boot plsql

我们有一个Angular-spring引导应用程序。

创建了Spring-boot API,以从oracle数据库获取详细信息,并使用PL / SQL过程调用将其保存回oracle。

从UI进行搜索操作不会花费更长的时间,但是保存操作却花费了很长时间(超过一分钟)。在保存中,我们将多个SqlArrayValue变量作为参数发送给PL / SQL调用。

SimpleJdbcCall save = new SimpleJdbcCall(jdbcTemplate).withProcedureName("procedureName")
        .withCatalogName("packageName").withoutProcedureColumnMetaDataAccess()
        .declareParameters(new SqlParameter("parameter1", OracleTypes.ARRAY, "oracleType1"),
                new SqlParameter("parameter2", OracleTypes.ARRAY, "oracleType2"),
                new SqlParameter("parameter3", OracleTypes.ARRAY, "oracleType3"),
                new SqlParameter("parameter4", OracleTypes.VARCHAR),
                new SqlOutParameter("outParameter1", OracleTypes.NUMBER),
                new SqlOutParameter("outParameter2", Types.VARCHAR));

Map<String, Object> saveResult = save
        .execute(new MapSqlParameterSource().addValue("parameter1", new SqlArrayValue(detailsArray1))
        .addValue("parameter2", new SqlArrayValue(detailsArray2))
        .addValue("parameter3", new SqlArrayValue(detailsArray3))
        .addValue("parameter4", save.getSubmitFlag()));

已经对性能进行了调整。注释了完整的过程代码并进行了检查,但仍然花费了大约1分钟。

Oracle连接已使用带有弹簧启动自动连接的JdbcTemplate对象的JNDI创建。

任何人都可以提供任何输入信息,这可能是性能下降的原因,已经在Google上搜索了很多,但无法获得任何帮助。

0 个答案:

没有答案