Cómo optimizar la base de datos Oracle
2. 2. Ajustar el diseño de la estructura de la aplicación. Esta parte también se completa antes del desarrollo de los sistemas de información. Los programadores deben considerar qué tipo de arquitectura utiliza la aplicación, ya sea una arquitectura tradicional de dos niveles cliente/servidor o una arquitectura de tres niveles de navegador/Web/base de datos. Las diferentes arquitecturas de aplicaciones requieren diferentes recursos de base de datos.
3. 3. Ajuste la declaración SQL de la base de datos. La ejecución de la aplicación se atribuirá en última instancia a la ejecución de declaraciones SQL en la base de datos, por lo que la eficiencia de ejecución de las declaraciones SQL determina en última instancia el rendimiento de la base de datos ORACLE. ORACLE recomienda utilizar el optimizador de declaraciones y el administrador de nivel de fila de ORACLE para ajustar y optimizar las declaraciones SQL.
4, 4. Ajustar la asignación de memoria del servidor. Para optimizar la asignación de memoria durante la operación del sistema de información, el administrador de la base de datos puede ajustar el tamaño del búfer de datos, el búfer de registro y el grupo compartido del área global del sistema de base de datos (área SGA) de acuerdo con la operación de la base de datos. También puede ajustar el tamaño del área global del programa (área PGA). Cabe señalar que cuanto mayor sea el área SGA, mejor. Si el área SGA es demasiado grande, ocupará la memoria utilizada por el sistema operativo, lo que provocará el intercambio de páginas de la memoria virtual y ralentizará el sistema.
5. 5. Ajustar la E/S del disco duro. Este paso se completa antes de desarrollar el sistema de información. Los administradores de bases de datos pueden colocar archivos de datos que componen el mismo espacio de tabla en diferentes discos duros para lograr el equilibrio de carga de E/S entre los discos duros.
6. Ajuste los parámetros del sistema operativo, como la base de datos ORACLE que se ejecuta en el sistema operativo UNIX, puede ajustar el tamaño del grupo de búfer de datos de UNIX y el tamaño de la memoria que puede usar cada proceso.
De hecho, las medidas de optimización de la base de datos anteriores están relacionadas entre sí. El deterioro del rendimiento de la base de datos ORACLE se debe básicamente a un tiempo de respuesta prolongado del usuario, lo que requiere que los usuarios esperen mucho tiempo. Sin embargo, las razones del deterioro del rendimiento son diversas y, a veces, múltiples factores conducen al deterioro del rendimiento. Esto requiere que los administradores de bases de datos tengan conocimientos informáticos completos y sean sensibles a las principales causas que afectan el rendimiento de la base de datos. Además, una buena herramienta de gestión de bases de datos también es muy importante para optimizar el rendimiento de la base de datos.
Herramientas de optimización del rendimiento de la base de datos ORACLE
Las herramientas de optimización del rendimiento de la base de datos ORACLE son:
1, 1, diccionario de datos en línea de la base de datos ORACLE, el diccionario de datos en línea ORACLE puede reflejar El funcionamiento dinámico de ORACLE es muy útil para ajustar el rendimiento de la base de datos.
2. Las herramientas del sistema operativo, como vmstat e iostat de los sistemas operativos UNIX, pueden verificar la memoria a nivel del sistema y el uso de E/S del disco duro. Estas herramientas a veces son útiles para que los administradores encuentren dónde ocurren los cuellos de botella del sistema. .
3.La herramienta de seguimiento SQL puede registrar la ejecución de sentencias SQL. Los administradores pueden utilizar tablas virtuales para ajustar instancias y archivos de seguimiento de declaraciones SQL para ajustar el rendimiento de las aplicaciones. La herramienta de seguimiento del lenguaje SQL genera los resultados en un archivo del sistema operativo, que los administradores pueden ver utilizando la herramienta TKPROF.
4. 4. ORACLE Enterprise Manager (OEM), que es una interfaz gráfica de administración de usuarios que los usuarios pueden usar para administrar fácilmente la base de datos sin tener que recordar comandos complejos de administración de bases de datos ORACLE.
5. 5. Explicar el plan: comando de optimización del lenguaje SQL. El uso de este comando puede ayudar a los programadores a escribir un lenguaje SQL eficiente.
Evaluación del rendimiento del sistema de la base de datos ORACLE
Los diferentes tipos de sistemas de información requieren diferentes parámetros de la base de datos. Los administradores de bases de datos deben prestar atención a los diferentes parámetros de la base de datos según su tipo de sistema de información.
1, 1, Sistema de información de procesamiento de transacciones en línea (OLTP). Este tipo de sistema de información suele requerir una gran cantidad de operaciones de inserción y actualización. Los sistemas típicos incluyen sistemas de emisión de billetes de aviación civil, sistemas de ahorro bancario, etc.
Los sistemas OLTP deben garantizar la concurrencia, confiabilidad y velocidad de los usuarios finales de la base de datos. La base de datos ORACLE utilizada en dichos sistemas debe considerar principalmente los siguientes parámetros:
L ¿Es suficiente el segmento de reversión de la base de datos?
L l¿Necesito indexar, agregar y aplicar hash a la base de datos ORACLE?
¿Es suficiente el área global (SGA) del sistema l-l-l?
l l ¿Son eficientes las sentencias SQL?
2. 2. Data Warehousing La principal tarea de este sistema de información es consultar los datos masivos de ORACLE y obtener algunos patrones entre los datos. Para este tipo de base de datos ORACLE, el administrador de la base de datos debe prestar atención a los siguientes parámetros:
l l ¿Utilizar índice B* o índice de mapa de bits?
l l¿Se utilizan consultas SQL paralelas para mejorar la eficiencia de las consultas?
l l¿Utiliza funciones PL/SQL para escribir procedimientos almacenados?
L lSi es necesario, se debe establecer una base de datos paralela para mejorar la eficiencia de las consultas de la base de datos.
Principios para ajustar declaraciones SQL
El lenguaje SQL es un lenguaje flexible. Se puede lograr la misma función a través de diferentes declaraciones, pero la eficiencia de ejecución de las declaraciones es muy diferente. Los programadores pueden utilizar la declaración EXPLAIN PLAN para comparar varias opciones de implementación y elegir la mejor. En términos generales, los programadores deben cumplir las siguientes reglas al escribir declaraciones SQL:
1.1, intente utilizar índices. Intente comparar las siguientes dos declaraciones SQL:
Declaración a: seleccione dname, deptno from deptno not in
(select deptno from emp
Declaración b: de Seleccione dname, deptno de un departamento que no existe
(Seleccione dname de emp, donde dept. deptno = EMP. deptno);
Los resultados de estas dos declaraciones de consulta son los Lo mismo, pero cuando se ejecuta la instrucción A, ORACLE escaneará toda la tabla emp sin usar el índice deptno creado en la tabla emp. Cuando se ejecuta la instrucción B, ORACLE solo escanea parte de los datos en la tabla emp debido a la consulta de unión utilizada. en la subconsulta. , utilizando el índice de la columna deptno, por lo que la declaración B es más eficiente que la declaración a
2. Seleccione el orden conjunto de la consulta conjunta:
De taba a. tabb b., seleccione material en tabc c
donde a.acol está entre: alow y: ahigh
y b.bcol está entre: Blow y: bhigh
Y c.ccol entre :clow y :chigh
Y a.key1 = b.key1
AMD a clave 2 = c clave 2;
p. >En este ejemplo de SQL, el programador primero necesita seleccionar la tabla principal para consultar. Debido a que la tabla principal necesita escanear los datos de toda la tabla, la tabla principal debe tener los datos mínimos, por lo que la columna acol de la tabla. A en el ejemplo El rango debe ser menor que el rango de las columnas correspondientes de la tabla B y la tabla c
3. Use IN o NOT con cuidado en la declaración de subconsulta y el efecto de usar Where (NOT). ) existe es mucho mejor.
4. Utilice consultas conjuntas de vistas con precaución, especialmente consultas conjuntas entre vistas complejas. Generalmente es mejor descomponer la consulta de la vista en una consulta directa de la tabla de datos.
5. Puede utilizar los parámetros. Configure el parámetro SHARED_POOL_RESERVED_SIZE en el grupo compartido SGA***, lo cual es beneficioso para almacenar paquetes SQL grandes.
6. ORACLE puede ayudar a los programadores a "fijar" algunos procedimientos almacenados de uso frecuente en el área SQL sin necesidad de intercambiarlos fuera de la memoria, lo que ayuda a los programadores a "fijar" los procedimientos almacenados de uso frecuente y ocupar una gran cantidad de memoria en la memoria, lo que mejora. el tiempo de respuesta de los usuarios finales.
Ajuste de los parámetros de la CPU
La CPU es un recurso importante del servidor. Una buena condición de funcionamiento del servidor es que la tasa de utilización de la CPU sea superior al 90% durante las horas pico de trabajo. Si la tasa de utilización de la CPU es superior al 90 % durante el tiempo de inactividad, significa que el servidor carece de recursos de CPU. Si la utilización de la CPU sigue siendo baja durante las horas pico de trabajo, significa que los recursos de la CPU del servidor todavía son relativamente excesivos.
Utilice el mismo comando para ver el uso de la CPU. Para servidores que usan el sistema operativo UNIX, puede usar el comando SAR–U para verificar el uso de la CPU. Para servidores que usan el sistema operativo NT, puede usar el administrador de rendimiento de NT para verificar el uso de la CPU.
Los administradores de bases de datos pueden conocer el tiempo de CPU utilizado por la base de datos ORACLE viendo el elemento estadístico "CPU utilizado en esta sesión" en el diccionario de datos v$sysstat y viendo el elemento estadístico "Usuario del sistema operativo- nivel de tiempo de CPU" para comprender el tiempo de CPU en el modo de usuario del sistema operativo. Al observar las estadísticas de "Tiempo de CPU de llamada del sistema operativo", puede conocer el tiempo de CPU en el modo de sistema del sistema operativo. El tiempo total de CPU para un sistema operativo es la suma del tiempo en modo de usuario y en modo de sistema. Si el tiempo de CPU utilizado por la base de datos ORACLE representa más del 90% del tiempo total de CPU del sistema operativo, significa que la base de datos ORACLE utiliza básicamente la CPU del servidor, lo cual es razonable. Por el contrario, significa que la CPU del servidor está ocupada por otros programas y la base de datos ORACLE no puede obtener más tiempo de CPU.
El administrador de la base de datos también puede ver el diccionario de datos v$sesstat para obtener el tiempo de CPU ocupado por cada sesión actualmente conectada a la base de datos ORACLE, sabiendo así qué sesión consume más CPU del servidor.
Hay muchas situaciones en las que los recursos de la CPU son insuficientes: la repetición de declaraciones SQL, declaraciones SQL ineficientes y conflictos de bloqueo causarán recursos de CPU insuficientes.
1. El administrador de la base de datos puede ejecutar la siguiente declaración para verificar el análisis de la declaración SQL:
SELECT * FROM V$SYSSTAT
¿Dónde está el nombre?
('Tiempo de análisis de la CPU', 'El tiempo de análisis ha pasado', 'Recuento de análisis (duro)');
El tiempo de análisis de la CPU aquí es el tiempo de servicio del sistema y el El tiempo de análisis es el tiempo de respuesta y el tiempo de espera del usuario.
Tiempo de espera = tiempo de análisis transcurrido – tiempo de análisis de la CPU
De esto podemos obtener el tiempo de espera de análisis promedio de la declaración SQL del usuario = tiempo de espera/recuento de análisis. Este tiempo de espera promedio debería ser cercano a 0. Si el tiempo de espera promedio del análisis es demasiado largo, el administrador de la base de datos puede utilizar la siguiente declaración.
SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA
ORDENAR POR PARSE _ CALLS
Descubra qué sentencias SQL tienen una baja eficiencia de análisis. Los programadores pueden optimizar estas declaraciones o aumentar el valor del parámetro ORACLE SESSION_CACHED_CURSORS.
2. El administrador de la base de datos también puede ver sentencias SQL ineficientes a través de las siguientes sentencias:
SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA
Y optimizándolas. Las declaraciones también ayudarán a mejorar la utilización de la CPU.
3. El administrador de la base de datos puede verificar los conflictos de la base de datos ORACLE a través del elemento estadístico "no latch" en el diccionario de datos v$system_event. Si no hay conflictos, latch free no encontrará resultados. Si los conflictos son demasiado grandes, el administrador de la base de datos puede reducir el valor del parámetro spin_count para eliminar la utilización elevada de la CPU.
Ajuste de los parámetros de la memoria
El ajuste de los parámetros de la memoria se refiere principalmente al ajuste del área global del sistema (SGA) de la base de datos ORACLE. SGA consta principalmente de tres partes: * *Grupo compartido, búfer de datos y búfer de registro.
1, 1 y * * * El grupo compartido consta de dos partes: * * área SQL compartida y búfer del diccionario de datos, * * * el área SQL compartida es el área donde se almacenan los comandos SQL del usuario y los datos. buffer de diccionario Almacena información dinámica para operaciones de bases de datos. El administrador de la base de datos ejecuta la siguiente declaración:
Select (sum(pins-reloads))/sum(pins) "Lib Cache" from v$librarycache;
Ver * * * SQL uso del área. Esta utilización debe ser superior al 90%; de lo contrario, deberá aumentar el tamaño del grupo compartido. El administrador de la base de datos también puede ejecutar la siguiente instrucción:
select(sum(gets-get misses-usage-fixed))/sum(gets) "row cache" from v $rowcache
Verifique la tasa de utilización del búfer del diccionario de datos y debe ser superior al 90%; de lo contrario, deberá aumentar el tamaño del grupo compartido.
2, 2, búfer de datos. Los administradores de bases de datos pueden utilizar las siguientes declaraciones:
SELECT nombre, valor FROM v $ sysstat WHERE nombre IN(' db block gets ', ' consistente gets ', ' Physical reads ');
Verifique el uso del búfer de datos de la base de datos. Los resultados de la consulta se pueden utilizar para calcular la tasa de aciertos del búfer de datos = 1-(lectura física/(búsqueda de bloque db + recuperación consistente)).
Esta tasa de aciertos debe ser superior al 90 %; de lo contrario, será necesario aumentar el tamaño del búfer de datos.
3, 3, búfer de registro. El administrador de la base de datos puede ejecutar la siguiente declaración:
seleccione nombre, valor de v$sysstat donde nombre en ('rehacer entrada', 'rehacer solicitud de espacio de registro'); Los resultados de la consulta se pueden utilizar para calcular la tasa de fallas de la aplicación del búfer de registro:
Tasa de fallas de la aplicación = = número de solicitudes/número de entradas, la tasa de fallas de la aplicación debe ser cercana a 0. De lo contrario, el búfer de registro es demasiado pequeño y es necesario aumentarlo en la base de datos ORACLE.