Afinamiento Bases de Datos

Embed Size (px)

DESCRIPTION

Afinanmiento de bases de datos, ejemplos en power point

Citation preview

Diapositiva 1

TUNING (Afinamiento)Definiendo el tuning (afinamiento)

El ajuste de bases de datos debe ser un proceso proactivo encaminado a detectar posibles cuellos de botella en el gestor de bases de datos as como lograr que los tiempos de ejecucin de los distintos procesos de un sistema disminuyan, haciendo uso del menor nmero de recursos posible.

AFINAMIENTO EN ORACLELas bases de datos necesitan tcnicas para mejorar su rendimiento, por lo que su afinamiento es imprescindible para obtener su mximo aprovechamiento.

Cuatro grandes reas de gran importancia para lograr ese objetivo.

TUNING EN ORACLE

Cuatro reas principales SGA(System Global Area)

4 Metas de Oracle para impactar rpidamente

1-Localizar suficiente memoria para Oracle.

2-Conseguir los datos cargados en la memoria (cache).

3-Buscando queries problemticos que afectan la memoria y I/O.

4-Afinando los queries problemticosMeta # 1: tenemos suficiente memoria localizada para Oracle ?

Meta # 1: tenemos suficiente memoria localizada para Oracle ?

Cmo vemos lo que tenemos activado ?

DB_BLOCK_BUFFERS

SHARED_POOL_SIZE

SORT_AREA_SIZE

Meta#1: tenemos suficiente memoria localizada para Oracle ?

Valores del parmetro KEY INIT.ORA :select name, substr(value,1,40)from v$parameter where name in ('db_block_buffers','db_block_size','shared_pool_size','sort_area_size'); Nombre Valor db_block_buffers 4000 db_block_size 4096 shared_pool_size 7000000 sort_area_size 262144DB_BLOCK_BUFFERS

Si DB_BLOCK_BUFFERS es bajo, los usuarios podran no tener suficiente espacio en memoria para trabajar eficientemente.

Si DB_BLOCK_BUFFERS es alto, el sistema podra comenzar a hacer se podra detener.

9B. El SHARED_POOL_SIZE:Esta es la porcin de memoria localizada para la librera y el cache del diccionario de datos.

Si el SHARED_POOL_SIZE esta seteado demasiado bajo no se aprovechara adecuadamente el DB_BLOCK_BUFFERS.

Declaraciones que generan Segmentos TemporalesCreate Index...

Select .... Order By, Distinct, Group By, Union, Intersect, MinusUnindexed Joins & Correlated SubqueriesEl valor por defecto de la magnitud inicial para los segmentos temporales debe ser por lo menos tan grande como el valor de sort_area_size.C. Almacenar en memoria en lugar de en segmentos temporales :El parmetro SORT_AREA_SIZE de Init.ora localiza memoria para efectuar ordenamientos.

Determina el espacio PER USER localizado en memoria principal para cada proceso de ordenamiento.

Si no es suficiente, los segmentos temporales son usados. Incrementar sort_area_size para reducir I/O a disco.

Causa swapping si la memoria asignada es pequea.Cache parametro de una tablaExamina toda la tabla y liste los mas recientemente usados.CREATE TABLE TEST_TAB (COL1 NUMBER)TABLESPACE USERSCACHE;

ALTER TABLE TEST_TABCACHE;

NOCACHE is the Default!

Meta # 3: Encuentre los queries que estn obstruyendo la memoria y causan problemas de I/OUse V$SQLAREA para encontrar problemas de Queries

Encuentre queries problematicos hurting de memoria (v$sqlarea)select disk_reads, sql_textfrom v$sqlareawhere disk_reads > 10000order by disk_reads desc;

Disk_readsSQL_TEXT12,987select order#,columns,types from orders where substr(orderid,1,2)=:1 11,131select custid, city from customer where city = CHICAGO

Encontrar las lecturas lgicas mas grandes:select buffer_gets, sql_textfrom v$sqlareawhere buffer_gets > 200000order by buffer_gets desc;

Buffer_gets SQL_TEXT300,219select order#,cust_no, fromorders where division = 1

Encontrando el codigo PL/SQLselecttextfromuser_sourcewherename = PROCESS_DATEorder by line;

TEXT___________________________ procedure process_date is test_num number; begin test_num := 10; if test_num = 10 then update order_main set process_date = sysdate where order_num = 12345; end if; end;

Encontrar USER que bloquean a otros.Select a.serial#, a.sid, a.username, b.id1, c.sql_textfrom v$session a, v$lock b, v$sqltext cwhere b.id1 in(select distinct e.id1from v$session d, v$lock ewhere d.lockwait = e.kaddr)and a.sid = b.sidand c.hash_value = a.sql_hash_valueand b.request = 0;

Mate al USER del problemaSERIAL# SID USERNAME ID1 SQL_TEXT18 11 JOHNSON 393242 update authuser.emp set salary=90000

alter system kill session 11,18;Session Killed.

precise software solutions, inc..

Causas de una respuesta pobre