SlideShare una empresa de Scribd logo
Oracle 10 g  Tuning Oracle Parallel Query (OPQ) y Particionamiento de Tablas Juan Sánchez – jsancheznav@gmail.com
Objetivos Visión General Parámetros de Inicialización Partido de tablas Uso de OPQ Ejemplos Juan Sánchez – jsancheznav@gmail.com
Oracle Parallel Query Partición de una consulta entre n CPUs Recomendado en operaciones: FTS en tablas Grandes Ordenaciones Subconsultas Carga de datos Entornos: Decission Suport + Data Warehouse Juan Sánchez – jsancheznav@gmail.com Visión General
SQL    DML y SELECT Se ejecuta un proceso coordinador +  ( n procesos * grado paralelismo) Juan Sánchez – jsancheznav@gmail.com Visión General
Generación del proceso coordinador Subdivisión del trabajo en unidades Petición de procesos esclavos Asignación procesos esclavos a unidades trab Recolección y combinación de los resultados Devolución resultado conjunto Liberación procesos esclavos Juan Sánchez – jsancheznav@gmail.com ¿Cómo funciona?
Oracle mantiene un pool de procesos esclavos Un proceso esclavo solo puede estar asignado a una instrucción SQL Al finalizar la instrucción se libera el proc.esc. PARALLEL_MIN_SERVERS,  PARALLEL_MAX_SERVERS Cada proceso esclavo tiene su propia area de memoria  Juan Sánchez – jsancheznav@gmail.com Procesos esclavos
Nº CPUs   Si Grado Paralelismo<Nº CPU    Esperas!!! Siempre existe un proceso coordinador Nº Discos donde se almacena tabla Si Grado Paralelismo>Nº discos  Esperas!!! Juan Sánchez – jsancheznav@gmail.com Rendimiento depende de …
1 CPU y paralelizado activado Buena idea si CPU tiene que esperar por E/S mientras que el otro hilo puede continuar PARALLEL_MAX_SERVERS entre 2 y 4 Sobreuso de la paralelización Saturación de recursos Juan Sánchez – jsancheznav@gmail.com Notas importantes
División registros tablas en diferentes datafiles según criterios arbitrarios Una tabla particionada puede estar contenida en 1 o más datafiles Cada una de las particiones puede ser accedida en paralelo Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas Partición 1 tabla Partición 2 Partición 3 Posible Paralelización DML / Select
¿Por qué particionar? Mejora del rendimiento    Ejemplo muy básico Tablas e Índices en tablespaces diferentes Adaptación del almacenamiento al contenido de datos de la tabla RMAN más eficiente CBO utiliza OPQ Uso másivo de las CPUs  Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Se puede particionar una o más columnas Cada partición tiene asignada una Partition Key (columnas seleccionadas) Métodos de particionado Rango de valores Valores de una lista Column Hashing Combinados    Rango+Hash o Rango+List Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Una tabla sin particionar <> Una tabla con 1 partición Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Limitaciones Un registro solo puede pertenecer a una partición No se puede partir una tabla que es parte de un cluster Número máximo de particiones 1024K-1 No se puede partir una tabla que contiene columnas  LONG  or  LONG RAW Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Part. según  RANGO de VALORES Division registro según &quot;condición&quot;    p.e. Año de Fecha  Valor condicional es dinámico Tener en cuenta valor &quot;fuera de rango&quot; Atención a DML Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Ejemplo Rango de datos CREATE TABLE TABLA_PART ( COLUMN1 VARCHAR2(20) NOT NULL, COLUMN2 DATE, CONSTRAINT TABLA_PARTICIONADA_PK PRIMARY KEY ( COLUMN1 ) ) TABLESPACE &quot;USERS&quot; PARTITION BY RANGE(COLUMN2) ( PARTITION PART VALUES LESS THAN( to_date( '2010-01-01','YYYY-MM-DD')) TABLESPACE &quot;EXAMPLE&quot;, PARTITION PART2 VALUES LESS THAN( MAXVALUE ) TABLESPACE &quot;USERS&quot; ); INSERT INTO TABLA_PART VALUES('A',TO_DATE('2010-01-01','YYYY-MM-DD')); INSERT INTO TABLA_PART VALUES('B',TO_DATE('2009-01-01','YYYY-MM-DD')); COMMIT; SELECT * FROM DBA_EXTENTS WHERE segment_name='TABLA_PART'; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Part. según  LISTA de VALORES Division registro según &quot;condición&quot;    p.e. Tipo de Cliente Valor condicional es fijo    Foreign Key Tener en cuenta valor &quot;fuera de rango&quot; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Ejemplo Lista de valores CREATE TABLE TABLA_PART ( COLUMN1 VARCHAR2(20) NOT NULL, COLUMN2 VARCHAR2(2), CONSTRAINT TABLA_PARTICIONADA_PK PRIMARY KEY ( COLUMN1 ) ) TABLESPACE &quot;USERS&quot; PARTITION BY LIST(COLUMN2) ( PARTITION PART VALUES ('ES') TABLESPACE &quot;EXAMPLE&quot;, PARTITION PART2 VALUES ( DEFAULT ) TABLESPACE &quot;USERS&quot; ); INSERT INTO TABLA_PART VALUES('A','ES'); INSERT INTO TABLA_PART VALUES('B','FR'); COMMIT; SELECT * FROM DBA_EXTENTS WHERE segment_name='TABLA_PART'; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Part. según  HASHING Se calcula hash de un conjunto de columnas Se puede asignar como conjunto Limitaciones: Máximo 16 columnas ROWID, UROWID no permitidos LONG, LOB no permitidos Mejor rendimiento  nºparticiones potencia de 2 Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Ejemplo Lista de valores CREATE TABLE TABLA_PART ( COLUMN1 VARCHAR2(20) NOT NULL, COLUMN2 VARCHAR2(2), CONSTRAINT TABLA_PARTICIONADA_PK PRIMARY KEY ( COLUMN1 ) ) TABLESPACE &quot;USERS&quot; PARTITION BY HASH(COLUMN2) PARTITIONS 4  STORE IN (TABSP1,TABSP2,TABSP3,TABSP4) ; INSERT INTO TABLA_PART VALUES('A','ES'); INSERT INTO TABLA_PART VALUES('B','FR'); COMMIT; SELECT * FROM DBA_EXTENTS WHERE segment_name='TABLA_PART'; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Ejemplo Lista de valores Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Atención a Invalidación de indices si en tabla: COALESCE DROP EXCHANGE MERGE MOVE SPLIT TRUNCATE Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
Métodos de particionado Local Misma estructura que sus tablas particionadas Mejor opción debido a mnto automático Global Index ïndices con estructura diferente de tablas part Exigen mantenimiento manual Un índice cubre todas las particiones Juan Sánchez – jsancheznav@gmail.com Particionamiento de índices
Oracle controla nivel paralelismo Se puede obligar mediante: Hints de paralelización SQL> select /*+ FULL(employee_table)      PARALLEL(employee_table, 2) */ employee_name from employee_table where salary > 10000; Modificar el nivel de paralelismo de la tabla SQL> select degree from user_tables SQL> CREATE TABLE TABLA1 (COL1 VARCHAR2(20)) PARALLEL 2; Juan Sánchez – jsancheznav@gmail.com Obligar paralelismo
Desactivar en una tabla paralelizada SQL> alter table mitabla parallel (degree 1 instances 1); SQL> alter table mitabla noparallel; Desactivar en un índice paralelizado SQL> alter index miindice parallel (degree 1 instances 1); SQL> alter index miindice noparallel;  Juan Sánchez – jsancheznav@gmail.com Desactivar paralelismo
Juan Sánchez – jsancheznav@gmail.com Parámetros Sistema Nº máximo de ejecuciones en paralelo Si valor bajo posiblemente DML/Select no se utilizará OPQ, aún siendo posible Si valor muy alto se consumiran excesivos recursos en horas punta.  parallel_max_servers Nº minimo de ejecuciones en paralelo parallel_min_servers Si TRUE: Gestión automática por Oracle DBA solo declara nivel paralelismo en tabla parallel_adaptive_multi_user configurado dinámicamente Incremento almacenamiento en Large Pool parallel_automatic_tuning  Descripción Parámetro
Juan Sánchez – jsancheznav@gmail.com Parámetros Sistema Si TRUE: Mejora rendimiento en entornos multiuser Se asume ajuste optimo en entorno monousuario parallel_adaptive_multi_user Descripción Parámetro
Juan Sánchez – jsancheznav@gmail.com Parámetros Ocultos Sistema SELECT a.ksppinm  &quot;Parameter&quot;, a.ksppdesc &quot;Description&quot;, b.ksppstvl &quot;Session Value&quot;, c.ksppstvl &quot;Instance Value&quot; FROM x$ksppi a, x$ksppcv b, x$ksppsv c WHERE a.indx = b.indx and a.indx = c.indx and a.ksppinm LIKE '/_parallel%' escape '/'; Controla el úmbral por el que CBO invoca el uso de OPQ _parallelism_cost_fudge_factor Descripción Parámetro
Vistas v_$pq_sysstat; v_$px_process; v_$px_sesstat; v_$px_process_sysstat; Juan Sánchez – jsancheznav@gmail.com Informe Uso Paralelización
Tomar snapshot con statspack Realizar consulta select to_char(snap_time,'yyyy-mm-dd HH24') mydate, new.value  nbr_pq from perfstat.stats$sysstat old, perfstat.stats$sysstat new, perfstat.stats$snapshot sn where new.name = old.name and new.name = 'queries parallelized' and new.snap_id = sn.snap_id and old.snap_id = sn.snap_id-1 and new.value > 1 order by to_char(snap_time,'yyyy-mm-dd HH24'); Juan Sánchez – jsancheznav@gmail.com Informe Uso Paralelización
Datapump expdp impdp Replicación Reconstrucción de objetos Juan Sánchez – jsancheznav@gmail.com Más allá de DML/Select

Más contenido relacionado

PPTX
DOCX
DOCX
Tutorial SQL
PPT
Sql 2010
PPT
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
PPTX
Expo
PPT
Comandos SQL
PPTX
Comandos utilizados en sql
Tutorial SQL
Sql 2010
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Expo
Comandos SQL
Comandos utilizados en sql

La actualidad más candente (13)

PPS
Manipulacion de Bases de Datos
PDF
Operaciones basicas de sql
PDF
Ejemplo ddl dml
PDF
Comandos ddl y dml
DOC
Manual sql
PDF
Unidad 2-lenguaje-sql
PPTX
Implementacion de bases de datos en mysql
PPTX
Data werehousing
PPT
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
DOCX
Sql Basico
PDF
PDF
Manual practicosql
Manipulacion de Bases de Datos
Operaciones basicas de sql
Ejemplo ddl dml
Comandos ddl y dml
Manual sql
Unidad 2-lenguaje-sql
Implementacion de bases de datos en mysql
Data werehousing
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Sql Basico
Manual practicosql
Publicidad

Similar a Oracle Tuning Opq (20)

PPTX
SQL avanzado
PPTX
Sql dinamico14042011
PPTX
Configuracion y administracion del espacio en disco
PDF
Indices columnares | SolidQ Summit 2012
PDF
MySQL Cluster: El ‘qué’ y el ‘cómo’.
PPTX
Presentación1
PPT
Partitioning
PPTX
Bases de Datos Masivas Corte I.pptx
PDF
Columnstore en la vida real
ODP
Postgresql Como Funciona Una Dbms Por Dentro
PPTX
Estructuras de almacenamiento de Oracle 11g R2
PDF
Postgresql_como_funciona_una_dbms_por_dentro.pdf
 
PPTX
Conociendo los cambios de SQL Server a partir de 2012 a 2016
DOCX
1. sistemas de administración de bases de datos 2007
PPT
Capítulo 2 - Libro Azúl (Profesor)
PPT
Capitulo 2
PPTX
Data warehouse
DOCX
Unidad 2 Arquitectura del gestor
PPTX
Taba y tipos de datos
SQL avanzado
Sql dinamico14042011
Configuracion y administracion del espacio en disco
Indices columnares | SolidQ Summit 2012
MySQL Cluster: El ‘qué’ y el ‘cómo’.
Presentación1
Partitioning
Bases de Datos Masivas Corte I.pptx
Columnstore en la vida real
Postgresql Como Funciona Una Dbms Por Dentro
Estructuras de almacenamiento de Oracle 11g R2
Postgresql_como_funciona_una_dbms_por_dentro.pdf
 
Conociendo los cambios de SQL Server a partir de 2012 a 2016
1. sistemas de administración de bases de datos 2007
Capítulo 2 - Libro Azúl (Profesor)
Capitulo 2
Data warehouse
Unidad 2 Arquitectura del gestor
Taba y tipos de datos
Publicidad

Más de Juan Sánchez (6)

PPTX
SUSE DHCPv6
PDF
Guia plsql breve
PPT
Compilación del Kernel
PDF
Linux Routing
PPT
File System Management
PPT
Bounding en Linux
SUSE DHCPv6
Guia plsql breve
Compilación del Kernel
Linux Routing
File System Management
Bounding en Linux

Último (20)

PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
2 GRADO UNIDAD 5 - 2025.docx para primaria
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Cosacos y hombres del Este en el Heer.ppt
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
biología es un libro sobre casi todo el tema de biología
Fundamentos_Educacion_a_Distancia_ABC.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
Escuela Sabática 6. A través del Mar Rojo.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
Tomo 1 de biologia gratis ultra plusenmas
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf

Oracle Tuning Opq

  • 1. Oracle 10 g Tuning Oracle Parallel Query (OPQ) y Particionamiento de Tablas Juan Sánchez – jsancheznav@gmail.com
  • 2. Objetivos Visión General Parámetros de Inicialización Partido de tablas Uso de OPQ Ejemplos Juan Sánchez – jsancheznav@gmail.com
  • 3. Oracle Parallel Query Partición de una consulta entre n CPUs Recomendado en operaciones: FTS en tablas Grandes Ordenaciones Subconsultas Carga de datos Entornos: Decission Suport + Data Warehouse Juan Sánchez – jsancheznav@gmail.com Visión General
  • 4. SQL  DML y SELECT Se ejecuta un proceso coordinador + ( n procesos * grado paralelismo) Juan Sánchez – jsancheznav@gmail.com Visión General
  • 5. Generación del proceso coordinador Subdivisión del trabajo en unidades Petición de procesos esclavos Asignación procesos esclavos a unidades trab Recolección y combinación de los resultados Devolución resultado conjunto Liberación procesos esclavos Juan Sánchez – jsancheznav@gmail.com ¿Cómo funciona?
  • 6. Oracle mantiene un pool de procesos esclavos Un proceso esclavo solo puede estar asignado a una instrucción SQL Al finalizar la instrucción se libera el proc.esc. PARALLEL_MIN_SERVERS, PARALLEL_MAX_SERVERS Cada proceso esclavo tiene su propia area de memoria Juan Sánchez – jsancheznav@gmail.com Procesos esclavos
  • 7. Nº CPUs Si Grado Paralelismo<Nº CPU  Esperas!!! Siempre existe un proceso coordinador Nº Discos donde se almacena tabla Si Grado Paralelismo>Nº discos  Esperas!!! Juan Sánchez – jsancheznav@gmail.com Rendimiento depende de …
  • 8. 1 CPU y paralelizado activado Buena idea si CPU tiene que esperar por E/S mientras que el otro hilo puede continuar PARALLEL_MAX_SERVERS entre 2 y 4 Sobreuso de la paralelización Saturación de recursos Juan Sánchez – jsancheznav@gmail.com Notas importantes
  • 9. División registros tablas en diferentes datafiles según criterios arbitrarios Una tabla particionada puede estar contenida en 1 o más datafiles Cada una de las particiones puede ser accedida en paralelo Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas Partición 1 tabla Partición 2 Partición 3 Posible Paralelización DML / Select
  • 10. ¿Por qué particionar? Mejora del rendimiento  Ejemplo muy básico Tablas e Índices en tablespaces diferentes Adaptación del almacenamiento al contenido de datos de la tabla RMAN más eficiente CBO utiliza OPQ Uso másivo de las CPUs Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 11. Se puede particionar una o más columnas Cada partición tiene asignada una Partition Key (columnas seleccionadas) Métodos de particionado Rango de valores Valores de una lista Column Hashing Combinados  Rango+Hash o Rango+List Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 12. Una tabla sin particionar <> Una tabla con 1 partición Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 13. Limitaciones Un registro solo puede pertenecer a una partición No se puede partir una tabla que es parte de un cluster Número máximo de particiones 1024K-1 No se puede partir una tabla que contiene columnas LONG or LONG RAW Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 14. Part. según RANGO de VALORES Division registro según &quot;condición&quot;  p.e. Año de Fecha Valor condicional es dinámico Tener en cuenta valor &quot;fuera de rango&quot; Atención a DML Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 15. Ejemplo Rango de datos CREATE TABLE TABLA_PART ( COLUMN1 VARCHAR2(20) NOT NULL, COLUMN2 DATE, CONSTRAINT TABLA_PARTICIONADA_PK PRIMARY KEY ( COLUMN1 ) ) TABLESPACE &quot;USERS&quot; PARTITION BY RANGE(COLUMN2) ( PARTITION PART VALUES LESS THAN( to_date( '2010-01-01','YYYY-MM-DD')) TABLESPACE &quot;EXAMPLE&quot;, PARTITION PART2 VALUES LESS THAN( MAXVALUE ) TABLESPACE &quot;USERS&quot; ); INSERT INTO TABLA_PART VALUES('A',TO_DATE('2010-01-01','YYYY-MM-DD')); INSERT INTO TABLA_PART VALUES('B',TO_DATE('2009-01-01','YYYY-MM-DD')); COMMIT; SELECT * FROM DBA_EXTENTS WHERE segment_name='TABLA_PART'; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 16. Part. según LISTA de VALORES Division registro según &quot;condición&quot;  p.e. Tipo de Cliente Valor condicional es fijo  Foreign Key Tener en cuenta valor &quot;fuera de rango&quot; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 17. Ejemplo Lista de valores CREATE TABLE TABLA_PART ( COLUMN1 VARCHAR2(20) NOT NULL, COLUMN2 VARCHAR2(2), CONSTRAINT TABLA_PARTICIONADA_PK PRIMARY KEY ( COLUMN1 ) ) TABLESPACE &quot;USERS&quot; PARTITION BY LIST(COLUMN2) ( PARTITION PART VALUES ('ES') TABLESPACE &quot;EXAMPLE&quot;, PARTITION PART2 VALUES ( DEFAULT ) TABLESPACE &quot;USERS&quot; ); INSERT INTO TABLA_PART VALUES('A','ES'); INSERT INTO TABLA_PART VALUES('B','FR'); COMMIT; SELECT * FROM DBA_EXTENTS WHERE segment_name='TABLA_PART'; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 18. Part. según HASHING Se calcula hash de un conjunto de columnas Se puede asignar como conjunto Limitaciones: Máximo 16 columnas ROWID, UROWID no permitidos LONG, LOB no permitidos Mejor rendimiento  nºparticiones potencia de 2 Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 19. Ejemplo Lista de valores CREATE TABLE TABLA_PART ( COLUMN1 VARCHAR2(20) NOT NULL, COLUMN2 VARCHAR2(2), CONSTRAINT TABLA_PARTICIONADA_PK PRIMARY KEY ( COLUMN1 ) ) TABLESPACE &quot;USERS&quot; PARTITION BY HASH(COLUMN2) PARTITIONS 4 STORE IN (TABSP1,TABSP2,TABSP3,TABSP4) ; INSERT INTO TABLA_PART VALUES('A','ES'); INSERT INTO TABLA_PART VALUES('B','FR'); COMMIT; SELECT * FROM DBA_EXTENTS WHERE segment_name='TABLA_PART'; Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 20. Ejemplo Lista de valores Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 21. Atención a Invalidación de indices si en tabla: COALESCE DROP EXCHANGE MERGE MOVE SPLIT TRUNCATE Juan Sánchez – jsancheznav@gmail.com Particionamiento de tablas
  • 22. Métodos de particionado Local Misma estructura que sus tablas particionadas Mejor opción debido a mnto automático Global Index ïndices con estructura diferente de tablas part Exigen mantenimiento manual Un índice cubre todas las particiones Juan Sánchez – jsancheznav@gmail.com Particionamiento de índices
  • 23. Oracle controla nivel paralelismo Se puede obligar mediante: Hints de paralelización SQL> select /*+ FULL(employee_table) PARALLEL(employee_table, 2) */ employee_name from employee_table where salary > 10000; Modificar el nivel de paralelismo de la tabla SQL> select degree from user_tables SQL> CREATE TABLE TABLA1 (COL1 VARCHAR2(20)) PARALLEL 2; Juan Sánchez – jsancheznav@gmail.com Obligar paralelismo
  • 24. Desactivar en una tabla paralelizada SQL> alter table mitabla parallel (degree 1 instances 1); SQL> alter table mitabla noparallel; Desactivar en un índice paralelizado SQL> alter index miindice parallel (degree 1 instances 1); SQL> alter index miindice noparallel; Juan Sánchez – jsancheznav@gmail.com Desactivar paralelismo
  • 25. Juan Sánchez – jsancheznav@gmail.com Parámetros Sistema Nº máximo de ejecuciones en paralelo Si valor bajo posiblemente DML/Select no se utilizará OPQ, aún siendo posible Si valor muy alto se consumiran excesivos recursos en horas punta. parallel_max_servers Nº minimo de ejecuciones en paralelo parallel_min_servers Si TRUE: Gestión automática por Oracle DBA solo declara nivel paralelismo en tabla parallel_adaptive_multi_user configurado dinámicamente Incremento almacenamiento en Large Pool parallel_automatic_tuning Descripción Parámetro
  • 26. Juan Sánchez – jsancheznav@gmail.com Parámetros Sistema Si TRUE: Mejora rendimiento en entornos multiuser Se asume ajuste optimo en entorno monousuario parallel_adaptive_multi_user Descripción Parámetro
  • 27. Juan Sánchez – jsancheznav@gmail.com Parámetros Ocultos Sistema SELECT a.ksppinm &quot;Parameter&quot;, a.ksppdesc &quot;Description&quot;, b.ksppstvl &quot;Session Value&quot;, c.ksppstvl &quot;Instance Value&quot; FROM x$ksppi a, x$ksppcv b, x$ksppsv c WHERE a.indx = b.indx and a.indx = c.indx and a.ksppinm LIKE '/_parallel%' escape '/'; Controla el úmbral por el que CBO invoca el uso de OPQ _parallelism_cost_fudge_factor Descripción Parámetro
  • 28. Vistas v_$pq_sysstat; v_$px_process; v_$px_sesstat; v_$px_process_sysstat; Juan Sánchez – jsancheznav@gmail.com Informe Uso Paralelización
  • 29. Tomar snapshot con statspack Realizar consulta select to_char(snap_time,'yyyy-mm-dd HH24') mydate, new.value nbr_pq from perfstat.stats$sysstat old, perfstat.stats$sysstat new, perfstat.stats$snapshot sn where new.name = old.name and new.name = 'queries parallelized' and new.snap_id = sn.snap_id and old.snap_id = sn.snap_id-1 and new.value > 1 order by to_char(snap_time,'yyyy-mm-dd HH24'); Juan Sánchez – jsancheznav@gmail.com Informe Uso Paralelización
  • 30. Datapump expdp impdp Replicación Reconstrucción de objetos Juan Sánchez – jsancheznav@gmail.com Más allá de DML/Select