2 Replies Latest reply on Sep 8, 2019 11:43 PM by rober584812

    Acceso concurrente en Apex 19.1

    rober584812

      Buen día distinguidos expertos de Oracle en Español.

       

      Mi proveedor de Apex Hosting me indica que si dispongo de una página con 2 JOINS, esta puede ser accedida por unos 500 usuarios; sin embargo, dispongo de una página que contiene un Intreractive Grid basado en una Vista creada a partir de 5 joins,y esta página es a la que más acceden los usarios de mi aplicación. En cuanto al procesamiento, en esta página invoco a un procedimiento almacenado que se encarga de Actualizar los datos editados en el IG.

      Mi pregunta es, si dispongo de 500 usuarios, cuántos de ellos podrán acceder a mi aplicativo accediendo a la página descrita con un rendimiento aceptable?

       

      Saludos

        • 1. Re: Acceso concurrente en Apex 19.1
          L. Fernigrini

          Hola, es imposible contestar este tipo de preguntas sin conocer la consulta exacta, el plan de ejecución y los recursos disponibles en el servidor...

           

          El hecho de que tenga 2 o 10 joins no implica nada. Pueden ser 10 joins desde una tabla de facturas a 10 tablas relacionadas (cliente, producto, estado, sucursal, etc etc) y todas ellas son joins por PK... o puede ser 2 join entre tablas de facturas y remitos hechas sobre columnas no indexadas, lo cual puede consumir muchísimos mas recursos.

           

          Lo ideal es que compartas la consulta y el plan de ejecucion, para ver como se puede simplificar o mejorar, eso te va a dar la oportunidad (normalmente) de ejecutar mas consultas en forma concurrente.

          • 2. Re: Acceso concurrente en Apex 19.1
            rober584812

            Gracias por su respuesta.

             

            Mi Vista es la siguiente:

             

            SELECT MATRICULA.PERIODO,

              MATRICULA.NUMERO_MATRICULA,

              MATRICULA.ALUMNO_ID,

              MATRICULA.CURSO_ID,

              MATRICULA.SUBNIVEL_ID,

              MATRICULA.NIVEL_ID,

              MATRICULA.PARALELO,

              ESTUDIANTE.APELLIDOS,

              ESTUDIANTE.NOMBRES,

              CURSO.NOMBRE_CURSO,

              NIVEL_EDUCACION.NOMBRE_NIVEL,

              NIVEL_EDUCACION.NIVEL_EDUCACION_ID,

              SUBNIVEL_ESPECIALIDAD.SUBNIVEL_ID AS SUBNIVEL_ID1,

              SUBNIVEL_ESPECIALIDAD.NOMBRE_SUBNIVEL,

              ASIGNATURA_MODULO.NOMBRE_ASIGNATURA,

              RENDIMIENTO_ACADEMICO3.ASIGNATURA_ID,

              RENDIMIENTO_ACADEMICO3.SUBPERIODO_ID,

              RENDIMIENTO_ACADEMICO3.ASIENTAEL,

              ROUND(RENDIMIENTO_ACADEMICO3.TAI1,2)AS TAI1,

              RENDIMIENTO_ACADEMICO3.AIC1,

              RENDIMIENTO_ACADEMICO3.AGC1,

              RENDIMIENTO_ACADEMICO3.LECCION1,

              RENDIMIENTO_ACADEMICO3.EVALSUMATIVA1,

              ROUND(RENDIMIENTO_ACADEMICO3.PROMEDIO1,2) AS PROMEDIO1,

              RENDIMIENTO_ACADEMICO3.CUALITATIVA,

              RENDIMIENTO_ACADEMICO3.ASIENTAEL2,

              RENDIMIENTO_ACADEMICO3.TAI2,

              RENDIMIENTO_ACADEMICO3.AIC2,

              RENDIMIENTO_ACADEMICO3.AGC2,

              RENDIMIENTO_ACADEMICO3.LECCION2,

              RENDIMIENTO_ACADEMICO3.EVALSUMATIVA2,

              RENDIMIENTO_ACADEMICO3.PROMEDIO2,

              RENDIMIENTO_ACADEMICO3.CUALITATIVA2,

              RENDIMIENTO_ACADEMICO3.ASIENTAEL3,

              RENDIMIENTO_ACADEMICO3.TAI3,

              RENDIMIENTO_ACADEMICO3.AIC3,

              RENDIMIENTO_ACADEMICO3.AGC3,

              RENDIMIENTO_ACADEMICO3.LECCION3,

              RENDIMIENTO_ACADEMICO3.EVALSUMATIVA3,

              RENDIMIENTO_ACADEMICO3.PROMEDIO3,

              RENDIMIENTO_ACADEMICO3.CUALITATIVA3,

              ROUND(RENDIMIENTO_ACADEMICO3.PROMEDIO_3PARCIALES,2) AS PROMEDIO_3PARCIALES,

              ROUND(RENDIMIENTO_ACADEMICO3.PROMEDIO_FINAL3PARCIALES,2) AS PROMEDIO_FINAL3PARCIALES ,

              RENDIMIENTO_ACADEMICO3.EVALUACION_QUIMESTRAL,

              RENDIMIENTO_ACADEMICO3.PROMEDIO_EVALQUIMESTRAL,

              ROUND(RENDIMIENTO_ACADEMICO3.PROMEDIO_QUIMESTRAL,2)PROMEDIO_QUIMESTRAL,

              RENDIMIENTO_ACADEMICO3.PUNTAJE_CUALITATIVA,

              RENDIMIENTO_ACADEMICO3.PROMEDIO23,

              RENDIMIENTO_ACADEMICO3.PROMEDIO22,

              RENDIMIENTO_ACADEMICO3.PROMEDIO21,

              ROUND(RENDIMIENTO_ACADEMICO3.PROMEDIO_3PAR2,2)AS PROMEDIO_3PAR2,

              TRUNC(RENDIMIENTO_ACADEMICO3.PROMEDIO_3FIN2PAR,2) AS PROMEDIO_3FIN2PAR,

              RENDIMIENTO_ACADEMICO3.EVALUACION_QUIMESTRAL2,

              RENDIMIENTO_ACADEMICO3.PROMEDIO_EVALQUIMESTRAL2,

              ROUND(RENDIMIENTO_ACADEMICO3.PROMEDIO_QUIMESTRAL2,2)AS PROMEDIO_QUIMESTRAL2,

              RENDIMIENTO_ACADEMICO3.ASIENTAEL21,

              RENDIMIENTO_ACADEMICO3.TAI21,

              RENDIMIENTO_ACADEMICO3.AIC21,

              RENDIMIENTO_ACADEMICO3.AGC21,

              RENDIMIENTO_ACADEMICO3.LECCION21,

              RENDIMIENTO_ACADEMICO3.EVALSUMATIVA21,

              RENDIMIENTO_ACADEMICO3.CUALITATIVA21,

              RENDIMIENTO_ACADEMICO3.ASIENTAEL22,

              RENDIMIENTO_ACADEMICO3.TAI22,

              RENDIMIENTO_ACADEMICO3.AIC22,

              RENDIMIENTO_ACADEMICO3.AGC22,

              RENDIMIENTO_ACADEMICO3.LECCION22,

              RENDIMIENTO_ACADEMICO3.EVALSUMATIVA22,

              RENDIMIENTO_ACADEMICO3.CUALITATIVA22,

              RENDIMIENTO_ACADEMICO3.ASIENTAEL23,

              RENDIMIENTO_ACADEMICO3.TAI23,

              RENDIMIENTO_ACADEMICO3.AIC23,

              RENDIMIENTO_ACADEMICO3.AGC23,

              RENDIMIENTO_ACADEMICO3.LECCION23,

              RENDIMIENTO_ACADEMICO3.EVALSUMATIVA23,

              RENDIMIENTO_ACADEMICO3.CUALITATIVA23,

              RENDIMIENTO_ACADEMICO3.PUNTAJE_CUALITATIVA2,

              RENDIMIENTO_ACADEMICO3.EXAMEN_SUPLETORIO,

              RENDIMIENTO_ACADEMICO3.EXAMEN_REMEDIAL,

              RENDIMIENTO_ACADEMICO3.EXAMEN_GRACIA,

              RENDIMIENTO_ACADEMICO3.PROMEDIO_ANUAL,

              RENDIMIENTO_ACADEMICO3.CUALITATIVA_ANUAL,

              RENDIMIENTO_ACADEMICO3.PMP1,

              RENDIMIENTO_ACADEMICO3.RECOMP2,

              RENDIMIENTO_ACADEMICO3.PMP2,

              RENDIMIENTO_ACADEMICO3.RECOMP3,

              RENDIMIENTO_ACADEMICO3.PMP3,

              RENDIMIENTO_ACADEMICO3.RECOMP4,

              RENDIMIENTO_ACADEMICO3.PMP4,

              RENDIMIENTO_ACADEMICO3.RECOMP5,

              RENDIMIENTO_ACADEMICO3.PMP5,

              RENDIMIENTO_ACADEMICO3.RECOMP6,

              RENDIMIENTO_ACADEMICO3.PMP6,

              RENDIMIENTO_ACADEMICO3.ESPROMOVIDO,

              RENDIMIENTO_ACADEMICO3.DAREXAMENSUPLETORIO,

              RENDIMIENTO_ACADEMICO3.DAREXAMENREMEDIAL,

              RENDIMIENTO_ACADEMICO3.EXAMENDEGRACIA,

              RENDIMIENTO_ACADEMICO3.RECOMENDACIONES,

              RENDIMIENTO_ACADEMICO3.PLANMEDORADIDACTICO,

              RENDIMIENTO_ACADEMICO3.NOTAEVALSUPLETORIO,

              RENDIMIENTO_ACADEMICO3.NOTAEVALREMDIAL,

              RENDIMIENTO_ACADEMICO3.NOTAEVALGRACIA,

              RENDIMIENTO_ACADEMICO3.PROMEDIO_FINAL,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.TAI1)          AS TAI_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.AIC1)          AS AIC_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.AGC1)          AS AGC_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.LECCION1)      AS LECCION_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.EVALSUMATIVA1) AS EVALSUM1,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.PROMEDIO1)     AS PROMEDIO1_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.AIC2)          AS AIC2_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.TAI2)          AS TAI2_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.AGC2)          AS AGC2_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.LECCION2)      AS LECCION2_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.EVALSUMATIVA2) AS EVALSUM2_S,

              TO_CHAR(RENDIMIENTO_ACADEMICO3.PROMEDIO2)     AS PROMEDIO2_S,

              ASIGNATURA_MODULO.MODO_EVALUACION,

              MATRICULA.JORNADA_ID,

              JORNADAS.JORNADA_NOMBRE,

              DATOS_INSTITUCION.NOMBRE_INSTITUCION,

              DATOS_INSTITUCION.DENOMINACION_MED,

              DATOS_INSTITUCION.CODIGO_AMIE,

              DATOS_INSTITUCION.CORREO_ELECTRONICO,

              DATOS_INSTITUCION.IMAGEN,

              DATOS_INSTITUCION.INSTITUCION_ID,

              DATOS_INSTITUCION.TELEFONO,

              EXAMEN_RECUPERA_PROM

            FROM MATRICULA INNER JOIN CURSO

                      ON CURSO.CURSO_ID = MATRICULA.CURSO_ID

                      INNER JOIN JORNADAS

                      ON (JORNADAS.JORNADA_ID = MATRICULA.JORNADA_ID)

                     INNER JOIN RENDIMIENTO_ACADEMICO3

                     ON RENDIMIENTO_ACADEMICO3.PERIODO           = MATRICULA.PERIODO

                     AND RENDIMIENTO_ACADEMICO3.NUMERO_MATRICULA = MATRICULA.NUMERO_MATRICULA

                    INNER JOIN ASIGNATURA_MODULO

                     ON ASIGNATURA_MODULO.ASIGNATURA_ID = RENDIMIENTO_ACADEMICO3.ASIGNATURA_ID

                    INNER JOIN DATOS_INSTITUCION

                    ON MATRICULA.INSTITUCION_ID = DATOS_INSTITUCION.INSTITUCION_ID,

                          ESTUDIANTE,

                          NIVEL_EDUCACION,

                          SUBNIVEL_ESPECIALIDAD

             

            WHERE ESTUDIANTE.ESTUDIANTE_ID = MATRICULA.ALUMNO_ID

                 AND MATRICULA.NIVEL_ID         = NIVEL_EDUCACION.NIVEL_EDUCACION_ID

                AND MATRICULA.SUBNIVEL_ID      = SUBNIVEL_ESPECIALIDAD.SUBNIVEL_ID

                AND MATRICULA.RETIRADO        != 'S';

             

             

            El plan de Ejecución:

             

             

            OraclePlanEjecucion1.pngOraclePlanEjecucion2.png