Cómo sintonizar sql en 12c oráculo
La explosión más grande que se va a conseguir en términos de optimización del rendimiento de sus bases de datos Oracle 12c es teniendo buena Structured Query Language (SQL). Mal escrito SQL es predominantemente la causa de la mayoría de los problemas de rendimiento en cualquier base de datos.
Conteúdo
Escribir buena SQL desde el principio cuando se está desarrollando una nueva aplicación que puede salvar cubos de dinero y tiempo más tarde. Por desgracia, como un administrador de base de datos, la mayoría de las situaciones te encuentras en son en sistemas preexistentes donde el SQL ya está en su lugar.
Cómo generar un plan de explicar en Oracle 12c
Digamos que se han reducido un problema de rendimiento a una declaración específica de SQL en la base de datos. A través de cuestionar el usuario y probar el problema usted mismo, usted ha sido capaz de replicar el problema con una sentencia SQL específica.
Una de las herramientas proporcionadas con la base de datos que primero quiere familiarizarse con es explicar el plan. Explique Plan de hace exactamente lo que dice. Le muestra la ejecución de la sentencia SQL y explica lo que está haciendo cada paso del plan.
El Plan Explique se genera mediante el comando SQL EXPLAIN PLAN. Como un simple ejemplo, supongamos que tiene la siguiente sentencia SQL, que está tomando mucho tiempo para ejecutar:
First_name SELECT, last_nameFROM empWHERE last_name = 'Hopkins'-
He aquí cómo usted genera un Explique Plan para la declaración anterior:
EXPLICAR PLAN FORSELECT first_name, last_nameFROM empWHERE last_name = 'Hopkins'-
Usted ve esta salida después de generar el Plan Explique:
Explicado.
Después se explica la sentencia SQL, por defecto el plan se almacena en la tabla de diccionario de datos llamado PLAN_TABLE $. Hay un sinónimo público, PLAN_TABLE, que permite que todos los usuarios tengan acceso a esta tabla interna.
Cómo mostrar y leer la salida sentencia SQL en Oracle 12c
Usted puede sacar la información en el PLAN_TABLE en un número de maneras. Hay una gran cantidad de información que se mostrará. Viendo todo esto no es siempre útil. Un método simple es ejecutar un script proporcionado por Oracle para leer y formatear la información.
Este método muestra sólo la más reciente Explique Plan. El script se almacena en el directorio $ ORACLE_HOME / RDBMS / admin. El script se llama utlxpls. A partir de SQL en la misma sesión en la que se ejecutó el EXPLICAR, escriba lo siguiente:
SQL> @? RDBMS admin utlxpls
Un atajo para especificar ORACLE_HOME es el "? " como se muestra en la declaración anterior.
La salida se explica de la instrucción SQL es similar a esto:
PLAN_TABLE_OUTPUT ------------------------------------------------- ------------------------- Plan de valor hash: 3956160932 -------------------- -------------------------------------------------- ---- | Id | Funcionamiento | Nombre | Filas | Bytes | Costo (% de la CPU) | Tiempo | ------------------------------------------------ -------------------------- | 0 | DECLARACIÓN DE SELECCIÓN | | 1 | 15 | 40335 (2) | 00:00:02 || * 1 | TABLA ACCESO COMPLETO | EMP | 1 | 15 | 40335 (2) | 00:00:02 | -------------------------------------------- ------------------------------ Información Predicado (identificado por id funcionamiento): ----------- ---------------------------------------- 1 - filtro ("LAST_NAME" = 'Hopkins ')
Aunque se necesita un poco de experiencia para leer los detalles finos en la salida PLAN DE EXPLICAR, algunas cosas saltan:
El uso de un escaneo completo de tabla (TABLA ACCESO COMPLETO EMP)
La información Predicado (1 -. Filtro ("LAST_NAME" = 'Hopkins) Esta es su cláusula where.
El número 1 juego de Información Predicado de nuevo a la operación. Los índices numéricos esto de nuevo a la etapa en la sección anterior. En este ejemplo, parece simple, pero, si usted tiene un plan Explique con decenas de líneas, esto puede ser muy útil.
Otro poco de información que tenga en cuenta es el valor para COSTO. En el caso anterior, el costo es de 40335. Aunque el costo en sí mismo no significa necesariamente nada a su valor nominal, se puede usar para comparar los cambios que realice en el plan de ejecución. Por lo general, menor será el costo es, mejor es su plan.
Declaraciones con muchas operaciones diferentes tienen costos asociados a cada paso. Al observar el costo de cada paso, se puede determinar en qué etapa de la ejecución es el más caro (recurso-sabio, no el dinero-sabio). Entonces usted puede enfocar su sintonía en ese escenario. La mayor parte del tiempo, a medida que realiza cambios y reducir el costo, usted está haciendo se mueve en la dirección correcta.
He aquí un ejemplo más complejo de un plan de ejecución:
explicar first_name forSELECT plan, apellidos, department_nameFROM emp unirse a los departamentos utilizando (department_id) DONDE last_name = 'Hopkins'-Explained.Elapsed: 00: 00: 00.09SQL> @?rdbmsadminutlxplsPLAN_TABLE_OUTPUT----------------------------------------------------------------------------------Plan valor hash: 3338584009 ---------------------------------------------- ------------------------------------------ | Id | Funcionamiento | Nombre | Filas | Bytes | Costo (% de la CPU) | Tiempo | ------------------------------------------------ ---------------------------------------- | 0 | DECLARACIÓN DE SELECCIÓN | | 1 | 34 | 40336 (2) | 00:00:02 || 1 | Bucles anidados | ||| | || 2 | Bucles anidados | | 1 | 34 | 40336 (2) | 00:00:02 || * 3 | TABLA ACCESO COMPLETO | EMP | 1 | 18 | 40335 (2) | 00:00:02 || * 4 | UNIQUE INDEX SCAN | DEPT_ID_PK | 1 || 0 (0) | 00:00:01 || 5 | CUADRO DE ACCESO POR ROWID ÍNDICE | DEPARTAMENTOS | 1 | 16 | 1 (0) | 00:00:01 | -------------------------------------------- -------------------------------------- Información Predicado (identificado por id funcionamiento): --- ------------------------------------------------ 3 - filtro ("EMP" "LAST_NAME" = 'Hopkins.) 4 - Acceso (.. "EMP" "DEPARTMENT_ID" = "DEPARTAMENTOS" "DEPARTMENT_ID")
En este ejemplo, se ve cinco operaciones. Al observar la operación de altura (Paso 5) y trabajando hacia atrás, se puede ver que el costo se ve así:
Paso 5 = 1Paso 4 = 0Paso 3 = 40335Paso 2 = 40336Paso 1 = 40336 Total = 40.336
Observe cómo el costo de todos los pasos que se suma. Observe también cómo el costo de la Etapa 3 es, con mucho, el más caro. Dicho esto, un administrador de la base (DBA) querría centrar sus esfuerzos de ajuste en el paso 3.