Adm y Opt de Base Datos INFORMIX

Anuncio
Informix
Administración y Optimización de Bases de Datos -Informix Dynamic Server
a
Informix
Indice
UNIDAD 1 - TERMINOLOGÍA ........................................................................................................ 1
COMPONENTES DE UNA INSTANCIA DEL INFORMIX DYNAMIC SERVER ........................... 1
Procesos .................................................................................................................................. 1
Shared Memory........................................................................................................................ 1
Discos ...................................................................................................................................... 2
COMPONENTES DE DISCO: ..................................................................................................... 2
Chunks..................................................................................................................................... 2
Dbspaces ................................................................................................................................. 3
Pages....................................................................................................................................... 3
Blobspaces .............................................................................................................................. 4
Blobpages ................................................................................................................................ 4
Extents ..................................................................................................................................... 4
Tblspaces................................................................................................................................. 5
CARACTERÍSTICAS DE LAS BASES DE DATOS...................................................................... 6
Logical Logs ............................................................................................................................. 6
Modos de Login........................................................................................................................ 6
Physical Logs ........................................................................................................................... 6
UNIDAD 2 - TIPOS DE DATOS...................................................................................................... 7
UNIDAD 3 - CREACIÓN DE BASES DE DATOS Y TABLAS........................................................ 9
CREACIÓN DE UNA BASE DE DATOS...................................................................................... 9
EL CATÁLOGO DEL SISTEMA................................................................................................... 9
CREACIÓN DE UNA TABLA ..................................................................................................... 10
USOS DE DATOS BLOBS ........................................................................................................ 10
TABLA TEMPORARIA .............................................................................................................. 10
ALTERAR UNA TABLA ............................................................................................................. 11
RENOMBRAR COLUMNAS, TABLAS Y BASES DE DATOS. .................................................. 11
BORRAR TABLAS Y BASES DE DATOS. ................................................................................ 11
DBSCHEMA: ............................................................................................................................. 11
UNIDAD 4 - ÍNDICES ................................................................................................................... 12
ESTRUCTURA DE INDICES..................................................................................................... 12
EL ÁRBOL B+ ........................................................................................................................... 12
CLASIFICACIÓN DE ÍNDICES.................................................................................................. 13
Único...................................................................................................................................... 13
Administración y Optimización de Bases de Datos -Informix Dynamic Server
b
Informix
Duplicado ............................................................................................................................... 13
Compuesto............................................................................................................................. 13
Cluster.................................................................................................................................... 13
FILLFACTOR ......................................................................................................................... 13
UNIDAD 5 - CONTROL DE CONCURRENCIA ............................................................................ 14
TIPOS DE CONCURRENCIA.................................................................................................... 14
READ CONCURRENCY: NIVELES DE AISLAMIENTO ............................................................ 14
Dirty Read ............................................................................................................................. 14
Committed Read .................................................................................................................... 14
Cursor Stability....................................................................................................................... 14
Repeteable Read ................................................................................................................... 14
UPDATE CONCURRENCY: NIVELES DE LOCKEOS .............................................................. 15
MODOS DE LOCKEO ............................................................................................................... 15
UNIDAD 6 - INTEGRIDAD ........................................................................................................... 16
REFERENCIAL, DE ENTIDAD Y SEMÁNTICA ......................................................................... 16
CONSTRAINTS......................................................................................................................... 16
Nombres de los constraints .................................................................................................... 16
Tipos de constraints ............................................................................................................... 16
Delete en cascada ................................................................................................................. 17
Los modos de transacción de los constraints: ....................................................................... 17
UNIDAD 7 - MODOS Y DETECCIÓN DE VIOLACIÓN ................................................................ 18
TIPOS DE OBJETOS DE BD. ................................................................................................... 18
MODOS DE OBJETOS DE BD.................................................................................................. 18
DESHABILITANDO, HABILITANDO Y FILTRANDO OBJETOS ................................................ 18
Capturando las violaciones .................................................................................................... 19
Seteo de tablas de violación................................................................................................... 20
UNIDAD 8 - OPTIMIZADOR BASADO EN COSTOS................................................................... 21
ESTRATEGIAS DE JOIN .......................................................................................................... 21
Nested loop join ..................................................................................................................... 21
Hash join ................................................................................................................................ 21
Sort Merge Join...................................................................................................................... 21
PROCESO DE OPTIMIZACIÓN: ............................................................................................... 22
Examinar todas las tablas ...................................................................................................... 22
Estimar Costo Pair Join:......................................................................................................... 22
Administración y Optimización de Bases de Datos -Informix Dynamic Server
c
Informix
Repetir para cada tabla extra: ................................................................................................ 22
SET EXPLAIN ........................................................................................................................... 22
DIRECTIVAS DE OPTIMIZACIÓN: ........................................................................................... 24
MÉTODOS DE ACCESO .......................................................................................................... 24
Index ...................................................................................................................................... 24
Avoid_Index ........................................................................................................................... 24
Full (table name) .................................................................................................................... 25
Avoid Full (table name) .......................................................................................................... 25
Directivas de orden del Join ................................................................................................... 25
Directivas del método del Join................................................................................................ 25
Objetivo de optimización: ....................................................................................................... 25
Directiva de Explain................................................................................................................ 25
UNIDAD 9 - UPDATE STATISTICS ............................................................................................. 26
UPDATE STATISTICS .............................................................................................................. 26
Low ........................................................................................................................................ 26
Medium .................................................................................................................................. 27
High ....................................................................................................................................... 27
DISTRIBUCIONES .................................................................................................................... 27
UNIDAD 10 - SEGURIDAD .......................................................................................................... 28
NIVELES DE SEGURIDAD ....................................................................................................... 28
NIVELES DE PRIVILEGIO ........................................................................................................ 28
PRIVILEGIOS A NIVEL DE BD: ................................................................................................ 28
PRIVILEGIOS A NIVEL DE TABLA / COLUMNA ...................................................................... 28
Privilegios a nivel columna ..................................................................................................... 29
Privilegios de Stored Procedures ........................................................................................... 29
UNIDAD 11 - VISTAS................................................................................................................... 30
TABLAS VIRTUALES................................................................................................................ 30
COLUMNAS VIRTUALES ......................................................................................................... 30
CREACIÓN DE VISTAS ............................................................................................................ 30
BORRADO DE UNA VISTA....................................................................................................... 31
CONSULTA DE UNA VISTA ..................................................................................................... 31
RESTRICCIONES ..................................................................................................................... 31
CLÁUSULA WITH CHECK OPTION ......................................................................................... 31
UNIDAD 12 - MIGRACIÓN, UTILITARIOS PARA CARGAR Y DESCARGAR DATOS .............. 32
Administración y Optimización de Bases de Datos -Informix Dynamic Server
d
Informix
DBEXPORT............................................................................................................................... 32
DBIMPORT ............................................................................................................................... 32
DBLOAD ................................................................................................................................... 32
Archivo de Comandos del dbload:.......................................................................................... 32
LOAD ........................................................................................................................................ 33
UNLOAD ................................................................................................................................... 33
UNIDAD 13 - BACKUPS .............................................................................................................. 34
BACKUPS ................................................................................................................................. 34
ONTAPE ................................................................................................................................... 34
Niveles de backup.................................................................................................................. 35
BACKUP DE LOGICAL LOGS .................................................................................................. 36
Backup Automático ................................................................................................................ 36
Backup Continuo.................................................................................................................... 36
POLÍTICA DE BACKUP ............................................................................................................ 36
RESTORE ................................................................................................................................. 36
PARÁMETROS DE CONFIGURACIÓN DE ONTAPE ............................................................... 38
Administración y Optimización de Bases de Datos -Informix Dynamic Server
e
Informix
Administración y Optimización de Bases de Datos
Informix Dynamic Server
Unidad 1 - Terminología
Informix
Servidor de Base de Datos
•
Programa que administra los contenidos de una base de datos
•
Conoce como están organizadas físicamente las tablas, filas y columnas
•
Interpreta y ejecuta las sentencias SQL.
Componentes de una instancia del Informix Dynamic Server
Una instancia involucra a los procesos de la base de datos, la memoria compartida (Shared
Memory SHM) y la administración de los discos.
•
Procesos
•
Memoria Compartida (Shared Memory)
•
Discos
En una misma máquina puede haber varias instancias corriendo de manera independiente
bajo la misma instalación Informix.
Procesos
En IDS (Informix Dynamic Server), se denominan procesos virtuales (VP). Cada
proceso Virtual pertenece a una clase virtual. (VP Class). A cada VP, la podemos
ver corriendo en el servidor como un proceso oninit.
Shared Memory
La SHM, está compuesta de tres porciones: Residente, Virtual y de Mensajes.
•
Resident: es la porción estática, cuya función principal es el cache de datos del
disco a la SHM.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
1
Informix
•
Virtual: es la porción dinámica, es decir puede expandirse o contraerse. Su función
es manejar y controlar los recursos para los procesos.
•
Messages: es el mecanismo de comunicación para coordinar las actividades entre
los procesos del Cliente y es Servidor.
Estructura de la memoria compartida
Discos
El sistema informix necesita unidades de disco asignadas al sistema. Estas
unidades se denominan chunks y es donde se van a almacenar todos los datos de
las Bases de Datos (BD) y toda la información del sistema necesaria para el
mantenimiento del servidor.
El espacio de disco total del motor se puede representar como una colección de
uno o varios chunks o espacios asignados a la instancia.
Componentes de Disco:
Chunks
Un chunk se compone de una serie de páginas contiguas. Es el espacio contiguo
de disco asignado al sistema.
Un chunk puede ser, un raw device (RAW en UNIX o NTFS en NT) o un archivo de
file system.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
2
Informix
Dbspaces
Un dbspace es una colección de chunks que forman el espacio lógico de disco. En
ellos se almacenarán los datos de la BD y toda la información del sistema. El
dbspace tiene como mínimo un chunk asignado.
La ventaja de la agrupación de espacios en un dbspace es que se puede mantener
homogeneidad en la información ya que podemos direccionar una tabla completa a
un dbspace, optimizando de esta manera los tiempos de I/O. Otra gran ventaja es
que podemos realizar la recuperación desde un backup de todo un dbspace sin
tener que bajar la instancia, esto se lo llama “restore en caliente”.
Root dbspace: En este dbspace se guarda toda la información del sistema.
Pages
Una página es la unidad básica de almacenamiento y E/S en un sistema on line.
Los datos son almacenados en páginas al igual que los índices. Por ejemplo, si
deseamos guardar una fila en la base de datos, la misma será depositada en una
página. El tamaño prefijado de páginas depende de la arquitectura del S.O. Para la
mayoría de los Unix (la excepción es AIX) el tamaño de página es de 2KB mientras
que para NT es de 4KB. Este tamaño de página no puede cambiarse, excepto para
los blobpages.
Cuando se precisa cachear esa información, el online lo hará por medio de páginas
que serán almacenadas dentro de buffers de la SHM.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
3
Informix
Blobspaces
Tipo especial de dbspace que se usa para almacenar datos de tipo blobs.
Blobpages
Los campos que se definen tipo blob tienen la finalidad de guardar datos especiales
y con mucho volumen de información, entonces para agilizar las lecturas/escrituras
de estos datos, se crearon los blobpages, que en este caso reemplazaran a las
lecturas/escrituras por páginas. Al crear blobspaces se puede definir el tamaño de
los bobpages. Este tamaño indica cuantas páginas componen un blobpage. Las
lecturas/escrituras de estos datos se harán en unidades de blobpages y no de
páginas.
Extents
Un extent es un conjunto contiguo de páginas en disco, es el espacio físico
asignado a una tabla. Para almacenar datos en una tabla, ésta le pide al sistema
espacio; y éste le asigna un espacio del tamaño del extents que tenga definido esa
tabla. La mínima unidad de páginas contiguas es de 4 pg o sea 8 Kb. en UNIX. El
tamaño máximo es el del chunk por lo tanto sería de 1024000 páginas. Si se dejan
los tamaños de extents por default, éstos son de 4 páginas para el extent inicial y
los siguientes.
A una tabla, inicialmente se le puede asignar un extent de cierto tamaño y definir de
que tamaño serán los próximos extents. Una vez asignado el espacio a usar por la
tabla, no se puede modificar a menos que se reorganize la tabla. Si se llena el
primer extent, se le asignara otro dinámicamente según la medida que le hayamos
asignado a los próximos extents en el momento de la creación de la tabla.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
4
Informix
Tblspaces
Es el conjunto de páginas que contienen datos de una misma tabla de la BD.
Podríamos referirnos a un tblspace como un conjunto logico de extents.
Las páginas del tblspaces no necesariamente deben estar contiguas. Pueden
pertenecer a distintos chunks pero no a distintos dbspaces.
El máximo de extents que se pueden alojar en un tblspace es aproximadamente de
200. Un tblspace se aloja en un dbspace específico por lo que podemos darle
exclusividad de ciertos dbspaces a tablas específicas.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
5
Informix
Características de las Bases de Datos
Logical Logs
Los logical logs son una colección de páginas contiguas en disco. Su finalidad es
guardar los registros de las transacciones del sistema. El sistema on line debe tener
como mínimo 3 archivos de logical logs.
Modos de Login
•
No logging: No se graban las transacciones de la BD
•
Unbuffered logging: Se guardan las transacciones en buffers de logs y son bajados
a los archivos de logs al encontrar la sentencia COMMIT.
•
Buffered logging: Se guardan las transacciones en buffers de logs y son bajados a
los archivos de logs cuando el buffer está lleno.
•
Mode Ansi: por defecto son Unbuffered Logging.
Physical Logs
Los phisical logs, almacenan la imagen de la página de datos o índices antes que
sea modificada. Se utilizan en el proceso de fast recovery que acompaña al startup
de la base. También coordina con el proceso de backup.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
6
Informix
Unidad 2 - Tipos de Datos
Tipo
CHAR(N)
VARCHAR(M[,N])
BOOLEAN
SMALLINT
INTEGER
INT8
FLOAT
SMALLFLOAT
DECIMAL(P,E)
MONEY(P, E)
SERIAL
SERIAL8
DATE
DATETIME
INTERVAL
TEXT
Simple Large
Object
BYTE
Simple Large
Object
BLOB
Smart Large
Object
CLOB
Smart Large
Object
Bytes en
disco
2
(m/2)+1
1
2
4
Rango
Hasta 32767
bytes
Hasta 255
bytes
0/1
+-32767
+2147483647
Descripción
Almacena letras, números y símbolos. Son de
Long. fija
Almacena letras, números y símbolos. Son de
Long. Variable. Se usan cuando la mayoría de las
filas necesitan una pequeña cantidad de espacio y
otras necesitan más espacio. Puede almacenar
mas cantidad de filas por página de datos. Si la
fila crece y no hay espacio reservado, puede
necesitar guardarse en otro lugar físico del disco.
Cuando se escriben datos en este campo, éste
reserva el espacio mínimo o el que necesita si
éste lo excede.
Almacenan un estado verdadero o falso.
Almacena números enteros.
Almacena números enteros.
8 / 10 Dep.
A partir de IDS 2000
Plataforma
+-9223372036854775807
8
Hasta 16 dígit. Se utiliza para números con punto flotante.
Signific.
Hasta 8 dígit. Se utiliza para números con punto flotante.
Signific.
(m/2)+1 Hasta 32 dígit. El número de dígitos está especificado por el
Signific.
usuario. Los valores se redondean en el caso de
ser necesario.
Idem
Idem
Se usa en claves no críticas. Contiene números
INTEGER
INTEGER
que se le asigna a cada fila de la tabla en orden
secuencial. No asegura la unicidad.
Idem
Idem INT8
Idem SERIAL
INT8
4
Fechas
El formato por default es mm/dd/yyyy. Se usa la
Válidas
variable DBDATE para cambiar el formato
(m/2)+1 Ver ejemplo
Representa un punto en el tiempo desde años a
fracción de segundos.
(m/2)+1 Ver ejemplo
Representa un período de tiempo.
56+
Hasta 2GB Almacenan datos ASCII y caracteres de control
tamaño del
tales como archivos de procesadores de texto,
archivo
programas, etc. Se almacenan en Dbspaces o en
Blobspaces
56+
Hasta 2GB Almacena datos de tipo binarios tales como hojas
tamaño del
de cálculo, imágenes digitalizadas, sonidos, etc.
archivo
Se almacenan en Dbspaces o en Blobspaces
Hasta 4 TB Almacena datos de tipo binarios. Se almacenan
en Sbspaces
4
Hasta 4 TB
Almacenan textos, HTML, Postscript, formatos no
imprimibles. Se almacenan en Sbspaces
Administración y Optimización de Bases de Datos -Informix Dynamic Server
7
Informix
DATETIME
Datetime year to second (2001 05 21 08:32:05)
Datetime date to minute (21 08:32)
INTERVAL
Interval year to month
Interval hour to minute
DBCENTURY
Variable de entorno que se usa para setear la centuria cuando un dato fecha está
representado por 2 dígitos.
El seteo puede ser:
P: Se interpreta la centuria pasada.
F: Se interpreta la centuria futura.
C: Se interpreta con los años más próximos.
R: Se interpreta con la centuria actual.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
8
Informix
Unidad 3 - Creación de Bases de Datos y Tablas
Base de Datos: Conjunto de tablas y funciones relacionadas.
En cada Instancia del IDS, existen además de las bases
creadas por los usuarios, dos bases administradas por el
motor, la SYSMASTER y la SYSUTILS.
Creación de una base de datos
Al crear un BD, el administrador debe especificar:
•
Nombre de la Base de Datos
•
Modo de Transacciones
•
En cual dbspace se alojará
Nombre de la Base de Datos: Único en la instancia. Hasta 128 caracteres. Letras, dígitos y
underscore.
Modo de Transacciones: No Logging, Buffered Logging, Unbuffered Logging, ANSI.
Dbspace donde se alojará: si no se indica uno, lo hará en el rootdbspace. Esto no es
aconsejable.
Ej:
create database alumnos in dbs_guarani with log
with buffered log
with log mode ansi
El Catálogo del sistema
El catálogo del sistema se compone de un conjunto de tablas que describen la estructura de
la base de datos. Estas son automáticamente generadas en el momento de creación de la base
de datos. Las más consultadas son SYSTABLES, SYSCOLUMNS y SYSINDEX.
•
SYSTABLES: tienen un registro por c/tabla de la BD, incluyendo las tablas de
catálogo. Además tiene información de cuántas filas tiene cada tabla, cuando se
modificó, nombre de las tablas, tamaño, dueño, etc.
•
SYSCOLUMN: nombre de las columnas de cada tabla, tipo de dato, 2do valor
máximo, 2do valor mínimo, etc.
•
SYSINDEX: Nombre de los índices, campos que lo componen, etc.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
9
Informix
Creación de una tabla
Las tablas de datos se crean por default en el dbspace en que se encuentra la BD a menos
que se le indique un dbspace distinto.
Los espacios para las tablas se asignan en unidades de extents. Un extent es una colección
de páginas físicamente contiguas de disco. El tamaño de los extents también pueden definirse en
el momento de la creación o ser alterados posteriormente.
Los datos de las tablas permiten dos modos de lockeos: por filas o por páginas. Los lockeos
previenen que un usuario acceda a un dato que esta siendo utilizado por otro. El modo de lockeo
por default de las tablas es por página (PAGE).
Ej:
create table sga_alumnos (unidad_academica varchar(5) not null, carrera varchar(5) not null,
nro_inscripcion varchar(20) not null) in dbs_guarani extent size 64 next size 32 lock mode
row/page
Usos de Datos Blobs
Al crear campos de tipo BLOBS en una tabla, los valores de los mismos se almacenan por
default en el dbspace de la tabla, pero en una página distinta a la de los datos. Lo aconsejable al
crear datos BLOBS es indicar que éstos se almacenen en un dbspace especial, el blobspace.
create table sga_personas (nro_inscripcion varchar(10) not null, apellido varchar
(20) not null, nombres varchar (20) not null, fec_nacimiento date not null, foto byte in
blob_guarani) in dbs_guarani;
Tabla temporaria
Las tablas temporarias se crean en dbspaces específicos para objetos temporarios. Para
ello, debe existir este dbspace tipo temporario en la base de datos y estar seteada la variable
DBSPACETEMP a este dbspace.
Los dbspaces temporarios no trabajan con LOGIN por eso las tablas temporarias deben ser
creadas WITH NO LOG o con Base de datos sin LOG.
create temp table tmp_regulares (anio_academico char(4), periodo_lectivo
varchar(20), legajo varchar(10), materia varchar(5)) with no log ;
Administración y Optimización de Bases de Datos -Informix Dynamic Server
10
Informix
•
La tabla temporal sólo dura la sesión.
•
Puede ser borrada con DROP TABLE.
•
No tiene entrada en la tabla de catálogo.
•
No se pueden modificar.
•
Se le pueden crear índices.
•
Los dbspaces temporarios se definen en su creación.
Alterar una tabla
La sentencia alter permite agregar, modificar o borrar los campos de una tabla y con esta
sentencia se puede modificar el tamaño de los extents y los modos de lock..
Alter table sga_personas drop cod_postal;
Alter table sga_personas Modify dni integer not null;
Alter table sga_personas Add fecha_nac date;
Alter table sga_personas Add fecha_relev date before calle_nac;
Alter table sga_personas modify next size 300;
Alter table sga_personas lock mode row;
Renombrar columnas, tablas y bases de datos.
Rename
Column sga_personas.fecha_nac to fecha_nacimiento;
Table aux_aspirantes to sga_alumnos;
Database alumnos to alumnos_quimicas;
Borrar tablas y bases de datos.
Drop
table aux_aspirantes
Database pruebas_alumnos;
DBSCHEMA:
Se usa para obtener la estructura de una BD, una tabla o un Stored Procedure.
Genera un archivo de comandos SQL.
Ej.: dbschema – d alumnos – t sga_personas
Administración y Optimización de Bases de Datos -Informix Dynamic Server
11
Informix
Unidad 4 - ÍNDICES
Estructura de Indices
Los índices están organizados en una estructura de árbol B+.
Un árbol B+ es un conjunto de nodos que contienen la clave y un puntero a los datos o a
otro nodo.
El árbol B+ se maneja con niveles, donde el nivel 0 apunta a los datos y los niveles
superiores apuntan al nodo inferior. El nodo de nivel más alto es el nodo root.
El Árbol B+
401
NODO ROOT
>
394
387
393
292
D
387
>
294
89
293
A
T
292
89
O
97
95
S
89
59
57
56
Nivel 2
Nivel 1
Nivel 0
Si la clave es pequeña, pueden entrar más claves por nodo lo que significa que voy a tener
menos niveles. El tamaño de un nodo es el de una página. Cuando un nodo se llena, se produce
un split o división en 2 nodos y el valor medio de ambos pasa al nodo de nivel superior. Si el nodo
de nivel superior también se llena, se produce un split con éste y así sucesivamente. Cuando se
produce un split con el nodo root, el árbol crece un nivel y se crea un nuevo nodo root.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
12
Informix
Clasificación de índices
Los índices se clasifican en: Único, duplicado, compuesto, cluster. Un índice es único o
duplicado, además puede o no ser compuesto o cluster. El tamaño máximo de los índices es de
255 bytes.
Único
Se usan en primary key, unique index.
Duplicado
Cuando en la tabla hay más de una ocurrencia.
Compuesto
El índice está compuesto por más de un campo. Los índices compuestos no pueden tener
más de 16 campos y éstos a la vez no pueden superar los 255 bytes.
Cluster
Este tipo de índice, ordena la tabla físicamente. Sólo sirve en el momento de la creación.
Sirven para tablas de poco movimiento y mucha consulta.
Ej.: create index ix_personas_dni on sga_personas(dni) ;
create index ix_personas on sga_personas(apellido, nombres) ;
create unique index [nombre índice] on [tabla donde están los datos]([atributos]) ;
create unique cluster index [nombre de índice] on [tabla de datos]([atributos]) ;
Si ya existe un índice cluster y queremos utilizar otro, se debe borrar el primero y volver a
construir el cluster.
Alter index ix_dni to cluster;
Alter index ix_apellido to not cluster;
Drop index ix_dni;
FILLFACTOR
Es el porcentaje de llenado de los nodos en el momento de creación del índice.
Create index ix_cod_postal on sga_datos_censales(cod_postal) fillfactor 80;
Significa que los nodos se llenaran hasta el 80% de su capacidad en el momento de
creación dejando un 20% para usar cuando el índice crezca. Por default el FILLFACTOR es de
90%.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
13
Informix
Unidad 5 - Control de Concurrencia
La concurrencia a los datos se produce cuando mas de un usuario quieren acceder al
mismo dato.
Tipos de Concurrencia
•
Read Concurrency → SELECT
•
Update Concurrency → INSERT, DELETE, UPDATE.
Read Concurrency: Niveles de Aislamiento
•
Dirty Read
•
Committed read
•
Cursor Stability
•
Repeteable Read
Dirty Read
Lee los datos de la tabla sin importar si los mismos se están modificando. (lock).
Sirve cuando la tabla es estática, no se necesita 100% de precisión y/o no se puede
esperar hasta la liberación del lock.
Committed Read
Lee datos confiables, comitidos que existen al momento de la lectura pero como
tampoco lockea, alguien puede modificar la tabla posteriormente.
Cursor Stability
Lockea la fila leída con SHARED LOCK. Asegura que la fila existe mientras se está
leyendo.
Repeteable Read
Lockea todas las filas involucradas en el QUERY. Si el motor entra en forma
secuencial, lockea toda la tabla. Coloca SHARED LOCK.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
14
Informix
Los comandos se setean antes de la sentencia select:
SET ISOLATION TO DIRTY READ;
SET ISOLATION TO COMMITTED READ;
SET ISOLATION TO CURSOR STABILITY;
SET ISOLATION TO REPETEABLE READ;
Update Concurrency: Niveles de lockeos
A nivel de base de datos: database alumnos exclusive;
A nivel de tablas: lock table sga_planes in share mode;
lock table sga_versiones in exclusive mode;
A nivel de página y filas: Se determinan en la creación o alteración de la tabla.
Lock por página pone un lock a toda la página.
Lock por fila coloca un lock por cada fila.
A nivel de clave: El método de lockeo de árbol B+ es el lock por clave donde la clave que
está siendo actualizada, insertada o borrada es lockeada..
Si se trabaja con bases de datos con logging de transacciones, las tablas se deslockean al
hacer COMMIT o ROLLBACK de la transacción.
En bases de datos sin logging se coloca: unlock table ordenes;
Modos de Lockeo
Set lock mode to wait;
Set lock mode to not wait;
Set lock mode to wait 20;
Administración y Optimización de Bases de Datos -Informix Dynamic Server
15
Informix
Unidad 6 - Integridad
Referencial, de Entidad y Semántica
Integridad Referencial: fuerza la relación entre tablas..
Integridad de Entidad: cada fila tiene un identificador único – clave primaria.
Integridad Semántica: dada por el tipo de dato de la columna.
•
Tipo de dato: según la declaración del tipo de la columna va a permitir o no el
ingreso de un dato.
•
Valor por defecto: valor que se coloca en el campo si no se define uno en el
momento del insert de la fila.
•
Chequeo de constraints: chequea condiciones de los datos insertados o
actualizados.
Constraints
Si al definir el constraint ya existen filas en la tabla, dichas filas deben satisfacer el constraint
para que el mismo pueda quedar declarado
Nombres de los constraints
Los constraints se identifican con un nombre asignado por el usuario en su creación o por el
sistema si el usuario no define uno.
Tipos de constraints
Constraint Check: devuelve un valor true o false. Se aplica a cada fila insertada o
actualizada.
Constraint Referencial: Fuerza la relación padre-hijo, exige que exista una clave única
Primary Key en la tabla padre a la cual va a referenciar la tabla hijo.
Constraint Unique: Asegura que los datos de la columna son únicos en toda la columna de
la tabla.
Not Null: garantiza que la columna contendrá datos en ese campo al hacer un insert o
update.
Ejemplos:
Create table sga_aspirantes (dni integer not null, leg_int smallint unique not null,
apellido char(15) not null, provincia varchar(4) check(provincia in (”5000”)), país
char(2) default ‘ar’, primary key (dni));
Administración y Optimización de Bases de Datos -Informix Dynamic Server
16
Informix
Create table sga_finales (dni integer not null, fecha_emision date default TODAY
not null, foreign key (dni) references test1);
Delete en cascada
El borrado en cascada permite el borrado automático de las filas de la tabla hija cuando la
fila del padre es borrada. Esto simplifica el código en la programación, además de procesarse sólo
una sentencia SQL, mejorando la performance .
Si la sentencia falla en algún punto, toda la transacción hace rollback.
Para invocar el delete en cascada, agregar la cláusula ON DELETE CASCADE después de
la cláusula REFERENCES en la sentencia CREATE TABLE para la tabla hija.
Ej.: CREATE TABLE sga_alumnos (unidad_academica VARCHAR(5) NOT NULL,
nro_inscripcion VARCHAR(10) NOT NULL, legajo VARCHAR(10) NOT NULL,
PRIMARY KEY (unidad_academica, legajo), FOREIGN KEY (unidad_academica,
nro_inscripcion)
REFERENCES
sga_personas
ON
DELETE
CASCADE
CONSTRAINT fk_alumnos_personas);
Si la tabla ya existe, habrá que hacer un ALTER TABLE:
ALTER TABLE sga_alumnos DROP CONSTRAINT fk_alumnos_personas,
ADD CONSTRAINT (FOREIGN KEY (unidad_academica , nro_inscripcion)
REFERENCES
sga_personas
ON
DELETE
CASCADE
CONSTRAINT
fk_alumnos_personas);
Los modos de transacción de los constraints:
El modo de transacción de los constraint determina cuando ocurrirá el chequeo del
constraint.
•
Inmediato
- Set constraints nombre const. Immediate;
•
Diferido
- Set constraints nombre const. deferred;
•
Desconectado
- Set constraints nombre const. detached;
Inmediato: el chequeo del constraint ocurre al final de cada sentencia.
Diferido: el chequeo del constraint se hace antes del commit.
Desconectado: es el modo de constraint que se usa en las BD sin logging y para tablas
temporarias creadas con With not log.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
17
Informix
Unidad 7 - Modos y Detección de Violación
Tipos de Objetos de BD.
Los objetos de las BD son:
•
Constraints
o
Unique
o
Referential
o
Check
o
Not null
•
Índices
•
Triggers
Unique: cada fila insertada o modificada debe tener un valor único para la clave.
Referential: fuerza la relación padre/hijo entre la clave primaria y la foránea.
Check: cada fila debe cumplir cierta condición especificada en la columna.
Not null: la columna no puede tener valor nulo.
Modos de Objetos de BD
Un objeto de BD puede tener uno de los siguientes modos:
•
Enabled: en este modo los constraints son chequeados, los índices están activos y
los triggers son disparados.
•
Disabled: en este modo los constraints no se chequean, los índices no se controlan
ni se actualizan y los triggers no son disparados.
•
Filtering (excepto triggers): en este modo los constraints son chequeados y las filas
que no pasan las validaciones son almacenadas en tablas de log y el proceso
continúa con el chequeo de las filas siguientes. Sólo los índices únicos pueden ser
filtrados. Los triggers no admiten este modo. No se hace rollback automático.
Deshabilitando, habilitando y filtrando objetos
Los datos en las BD se cargan más rápido si ésta no tiene que chequear constraints,
consultar y actualizar índices o disparar triggers. Por esta razón en algunos casos es conveniente
deshabilitar los objetos y habilitarlos una vez que los datos hayan ingresado a la BD. Es más
preciso re-habilitar un objeto que borrarlo y crearlo nuevamente.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
18
Informix
El modo filtro permite capturar las filas que no cumplen con las condiciones definidas para la
tabla. Cuando se trabaja en modo filtro, al terminan la sentencia el sistema no informa si ha habido
datos que no cumplieron las validaciones, para que lo informe se debe agregar a la sentencia de
del filtro el parámetro WITH ERROR.
Objetos Individuales:
Set constraints ck_estado, ck_secundario disabled
Set indexes idx_dni disabled
enabled
Set triggers tu _carrera_aspira disabled
enabled
filtering [with error];
filtering [with error];
enabled;
Por tabla:
Set constraints, indexes, triggers for cliente disabled
enabled
Set constraints, indexes for cliente filtering [with error] ;
Creando Objetos deshabilitados:
Create unique index id_apellido disabled
Create Table sga_datos_censales check (obra_social in (“S”, “N”)) disabled;
Create Trigger ti_planes disabled;
Capturando las violaciones
Para que al usar el modo filtro quede asentado cual fila no cumple con las restricciones de
los campos de la tabla, se deben habilitar unas tablas destinadas a tal efecto: Tabla de violación y
tabla de diagnóstico.
Set constraints enabled
Fila que contiene una
Constraint que fueron violados
violación
Una fila puede tener múltiples violaciones
Tabla de
Tabla de
violaciones
diagnóstico
Administración y Optimización de Bases de Datos -Informix Dynamic Server
19
Informix
Por cada tabla sólo puede existir una tabla de violación y una de diagnóstico. En la tabla de
violaciones se guarda la fila de datos que no cumple con alguna condición y en la tabla de
diagnóstico existe una fila por cada violación que ocurrió en esa fila.
Seteo de tablas de violación
Para habilitar las tablas de violación y diagnóstico, además de indicar el modo filtering, se
debe colocar:
Start violations table for sga_detalle_acta [using t_vio, t_dia] [max rows 10] ;
Por default, las tablas de violación y diagnóstico tienen el nombre de la tabla seguido por un
undescore y vio o dia según corresponda: ej: sga_detalle_acta_vio, sga_detalle_acta _dia.
Este nombre puede ser reemplazado si se indica en la sentencia de creación de las tablas
[using t_vio, t_dia] .
El parámetro [max rows n] indica el número máximo de filas en la tabla de diagnóstico por
cada fila en la tabla de violación.
Para que no se continúe guardando las filas filtradas en las tablas de violación y diagnóstico,
se debe ejecutar:
Stop violations table for sga_detalle_acta;
Administración y Optimización de Bases de Datos -Informix Dynamic Server
20
Informix
Unidad 8 - Optimizador basado en costos
Al ejecutar un select con más de una tabla involucrada, obtenemos:
Join = relación entre una o más columnas en c/tabla.
Tuple = resultado entre 2 tablas.
Estrategias de join
•
Nested Loop Join
•
Hash Join
•
Sort Merge Join
Nested loop join
Lee la primer tabla y con los campos del join arma una clave y ordena por esta
clave a la segunda tabla, luego barre la primer tabla en algún orden y une la
correspondiente columna con la segunda tabla por el índice.
Hash join
Barre la tabla más pequeña secuencialmente y construye una tabla Hash, a las filas
de la segunda tabla le aplica esta función hash y compara el resultado con la tabla
hash.
Sort Merge Join
Ordena ambas tablas por los campos del join, luego hace un merge entre las tablas
por los campos del join.
OPTCOMPIND: forma de influenciar al optimizador a elegir un query path.
Variable de entorno o parámetro de configuración.OPTCOMPIND = 0 sólo considera index path.
OPTCOMPIND = 1 En el nivel de aislamiento Repeteable Read sólo considera el
index path, de lo contrario considera el de menor costo.
OPTCOMPIND = 2 siempre considera el de menor costo.
El optimizador examina todos los caminos posibles de unión de las tablas del query:
Path 1: Tabla1
Tabla2
Tabla3
Path 2: Tabla1
Tabla3
Tabla2
Path 3: Tabla2
Tabla3
Tabla1
Administración y Optimización de Bases de Datos -Informix Dynamic Server
21
Informix
Proceso de optimización:
•
Examinar todas las tablas, filtros e índices.
•
Estimar costos para cada par join.
•
Repetir estimación por cada tabla en el join.
Examinar todas las tablas
•
Determinar si se pueden utilizar índices para filters, order by, group by.
•
Encontrar la mejor manera de barrer las tablas: secuencial o index.0
Estimar Costo Pair Join:
•
El optimizador selecciona el join entre dos tablas.
•
Decide qué índices usará.
•
Calcula el costo para cada join.
•
Elimina join redundantes.
Repetir para cada tabla extra:
Si existe un order by o group by, el costo del sort es agregado al final del costo del path.
Después que todas las tablas están unidas, el path con menor costo es elegido por el
optimizador.
La optimización high o low
permite elegir que el optimizador examine todos los path
posibles o solo los que de manera parcial van dando el menor costo.
Set Optimization [high|low[fist_rows]
Set Optimization low: elige el path a seguir por
el de menor costo de la primer
comparación y descarta el resto de las path.
Set Optimization [first_rows]: Recupera rápidamente las n filas y luego continúa el query.
Es distinto a la sentencia: select first 6 from clientes... dónde SOLO recupera las primeras 6 filas.
Set Explain
La sentencia SET EXPLAIN permite ver cual camino el optimizador eligió para resolver el
query.
Set explain on;
select……….;
select……….;
set explain off;
Administración y Optimización de Bases de Datos -Informix Dynamic Server
22
Informix
La salida del set explain, es un archivo llamado sqexplain.out que contiene la siguiente
información:
•
Costo Estimado:
•
Tablas usadas y en qué orden
•
Si fueran necesarias tablas temp.
Los tipos de acceso a las tablas serán uno de los siguientes:
•
Sequential scan
•
Index Path
•
Autoindex Path : índice temporario que se creó
•
Remote Path: servidor remoto decide el acceso
El tipo de Join entre dos tablas:
•
Nested loop join
•
Sort merge join
•
Hash Join
La información que nos da set explain es:
•
Costo estimado: n, sólo sirve para comparar con otro
•
Número de filas retornadas: también es estimada. Es más preciso cuando los filtros
y condiciones de join están asociadas con índices y cuando las estadísticas están
actualizadas.
•
Archivos temporarios: la razón por la que fue necesario crear un archivo temporario.
•
Cuando un query incluye una cláusula where, puede significar una condición de join
o un filtro.
•
Cuando el optimizador elige acceder elige acceder a la tabla a la tabla en forma
secuencial, y existe una condición de filtro, es informado en filters: condición.
•
Cuando el optimizador decide crear un índice para acceder a la tabla, muestra qué
clave se usó en index.key cuando dice (key only) significa que no necesitó leer toda
la fila.
•
Cuando se realiza una búsqueda por un índice, generalmente existe una de las dos
condiciones: el punto de partida y de fin.
•
Lower index filter: posición inicial de búsqueda cuando hay índices.
•
La condición que indica el punto de stop es el Upper index filter: condición de punto
de parada o de fin.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
23
Informix
•
Dynamic Hash Join: Indica que se construyó una tabla hash. Incluye el filtro usado
en el join. Por defecto la tabla hash se construye sobre la segunda tabla listada en
el set explain. Si tiene (Build Outer) es porque lo hace con la primera.
•
Remote Path: Se indica cuando el query accede a una tabla de una BD remota. El
optimizador puede decidir si el sitema remoto manejará algo o todo el query.
Directivas de Optimización:
Las directivas de optimización señalan al optimizador el path específico que debe seguir.
Tienen efecto sobre:
•
Métodos de acceso: index vs. Scan
•
Join methods: Hash o nested loop join.
•
Join order: orden de unión de tablas.
•
Optimización goal: tiempo de respuesta vs. Rendimiento procesamiento.
•
Explain: genera salida SQExplain.out
Pueden usarse en:
•
Select, update, delete.
•
Store procedures y triggers.
•
In views.
Ej.: select - - +comentario directiva ordered avoid full(índice) from……
Se escriben como comentarios y su primer carácter es el signo + (más).
--+ directiva
{ + directiva}
/ * + directiva * /
Métodos de acceso
Index
Soporta ninguno (0) ó más índices especificados
Nunca realiza un full scan
Si no se especifica nombre de índice se considera el de menor costo.
Ej.: select - - + index (
) from sga_insc_cursadas;
Avoid_Index
Acepta 0 ó más índices que no serán considerados.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
24
Informix
Evita que el optimizador considere índices.
Full (table name)
Fuerza un full scan.
Ej.: select - - + full (tabla) .. , from….
Avoid Full (table name)
Evita un full scan si existe índice. Se debería usar con nivel de aislamiento Repeteable
Read, ya que no está haciendo full scan, por lo tanto sólo lockea el índice.
Ej.: select - - + avoid_full (tabla) , index (tabla índice) …, from…..
Directivas de orden del Join
Fuerza al optimizador a unir las tablas en el orden en que se encuentran en la cláusula from.
Ej.: select {+ ordered} c.legajo, c.comision, p.nombre, m.nombre
from sga_comisiones c, personas p, materias m
where c.nro_inscripcion=p.nro_inscripcion
and c.materia=m.materia
Directivas del método del Join
•
Use_nl (table) = fuerza un nested loop join. La tabla pasada como parámetro es la
tabla accedida como inner (por el índice)
•
Avoid_nl (table) = evita un nested loop join sobre la tabla especificada.
•
Use_hash (tabla) = fuerza hash join. La tabla pasada como parámetro es la que se
usa para armar la tabla hash.
•
Avoid_hash (tabla) = evita hash join sobre tablas listadas.
Ej.: select - - + use_hash (sga_detalle_acta/build) … ,
from ….
Objetivo de optimización:
Permite especificar el número de filas que considera importante para la primera pantalla de
datos.
Ej.: select - - + first-row (100) ….., …. from…….
Directiva de Explain
Genera una salida del plan explain.
Ej.: select - - + explain avoid_full (sga_insc_examen) … from…
Administración y Optimización de Bases de Datos -Informix Dynamic Server
25
Informix
Unidad 9 - Update Statistics
UPDATE STATISTICS
La única manera de actualizar las estadísticas de las tablas del catalogo es corriendo la
sentencia UPDATE STATISTICS. El optimizador es influenciado por la información que contienen
las tablas del catalogo del sistema, por lo tanto correr el UPDATE STATISTICS es importante.
Una vez corrido, el motor guardara las estadísticas de cada una de las tablas e índices.
Actualiza las tablas del catálogo y genera tablas de distribución que serán usadas por el
optimizador para la resolución de los querys. Cuando las estadísticas están actualizadas las
consultas son más eficientes. Además optimiza los stored procedures.
Al UPDATE STATISTICS se lo puede correr de distintas maneras:
UPDATE STATISTICS (LOW-MEDIUM-HIGH)
Low
Usando este modo, no se crearán distribuciones. Si no se especifica el modo de UPDATE
STATISTICS, correrá un LOW por defecto
UPDATE STATISTICS FOR TABLE
Esta sentencia realizara el update statistics para todas las tablas.
UPDATE STATISTICS FOR TABLE tabla
Actualizara las estadísticas para una tabla especifica.
UPDATE STATISTICS FOR TABLE tabla (columna)
Actualizará las estadísticas para una columna específica.
El modo Low, no genera tablas de distribución, sólo actualiza las tablas:
•
Systables: Número de filas y número de páginas usadas
•
Syscolumns: Valores mínimo y máximo
•
Sysindexes: Número de nivel o del b+tree, número de niveles b+, número de
claves única y grado del cluster.
El modo HIGH y MEDIUM además de contemplar lo del modo LOW, crea distribuciones
para las columnas
Administración y Optimización de Bases de Datos -Informix Dynamic Server
26
Informix
Estas distribuciones son entradas adicionales en las tablas del catalogo del sistema con
información adicional sobre como están distribuidos los valores para cada tabla por columna.
Existen varios entradas por cada tabla ya que por cada columna, estos valores son determinados
por rangos y clasificados en valores únicos o repetitivos.
Medium
Selecciona filas aleatoriamente para construir la distribución
High
Ordena todas las filas y construye la distribución.
Se debe tener permiso de DBA para correr en modo Medium y High.
Los Stored procedures son optimizados en cualquier modo siempre y cuando no se
especifique FOR TABLE en la sentencia.
Distribuciones
Los modos medium y high del Update Statistics, crean o actualizan las distribuciones.
En el momento de la creación de las distribuciones, el motor distribuirá los valores únicos
por rangos en pequeños baldes como repositorio y los valores duplicados en una tina llamada
“overflow bin”.
Primeramente leerá las filas de la tabla y según la sentencia de UPDATE
STATISTICS, respetando el orden de las columnas.
A continuación ordenará las filas dependiendo del modo de ejecución (MEDIUM-HIGH). Si
es MEDIUM solo una parte aleatoria será ordenada y si es HIGH, involucrará a todas las filas.
Una vez ordenadas serán divididas en estos “baldes”. Estas distribuciones le serán útiles al
optimizador para elegir el camino más conveniente.
Se pueden generar las distribuciones sin actualizar las tablas systables, syscolumn y
sysindexes.
Update Statistics Medium distribution only;
Update Statistics High distribution only;
Informix recomienda que se generen las distribuciones ya que el optimizador toma datos
desde allí para armar su plan.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
27
Informix
Unidad 10 - Seguridad
Niveles de seguridad
•
Base de Datos
•
Tablas
•
Columnas
Niveles de Privilegio
Connect
Resource
DBA
X
X
X
X
X
Acceso a las tablas de la BD
Crear vistas y tablas temp.
Crear
y
borrar
tablas
e
índices, alter tabla
Otorgar y revocar privilegios
X
Borrar la Base de Datos
X
Para acceder a una Base de Datos se debe tener como mínimo privilegios de connect.
El DBA es quien puede otorgar o revocar estos privilegios:
Privilegios a nivel de BD:
grant connect to public;
grant resource to jorge;
grant DBA to maria;
Revoke connect from public;
Revoke resource from jorge;
Revoke dba from maria;
Privilegios a nivel de tabla / columna
Pueden ser de tipo: Alter, delete, index, select, update, insert, reference, all.
Grant all on tabla to public
Grant update on tabla to usuario1 with grant option.
Grant insert, delete on tabla to usuario1 as usuario2.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
28
Informix
With grant option: el usuario puede otorgar ese permiso a otro usuario.
AS: Hace otorgador del permiso a otro usuario.
Revoke all on tabla from public
Revoke update on tabla from public
Privilegios a nivel columna
Para otorgar privilegios sobre columnas, se usan las sentencias select, update y references.
Grant select (apellido, nombres) on sga_personas to public.
Grant insert, update (fecha_registro), select on sga_reiscripcion to public.
Privilegios de Stored Procedures
Revoke delete on sga_insc_cursadas from public
Grant execute on sp_borrar_insc_cursadas to public
Administración y Optimización de Bases de Datos -Informix Dynamic Server
29
Informix
Unidad 11 - Vistas
Tablas Virtuales
Las vistas son también llamadas tablas virtuales.
Pueden estar compuestas por algunos o todos los campos de una o varias tablas y a la vez
pueden estar filtrando filas que no cumplan ciertas condiciones. Para el usuario estos filtros son
totalmente transparentes, él la ve como una tabla corriente, por los que pueden ser utilizadas
como un mecanismo de seguridad evitando que algunos usuarios tengan acceso a cierta
información.
Los motivos más característicos del uso de vistas son:
•
Los datos de algunas columnas deben resguardarse de algunos usuarios.
•
Las filas de una consulta pueden no tener relevancia para algunos usuarios.
•
Se necesitan datos que son el resultado de un computo, de expresiones , etc.
Columnas Virtuales
Las columnas de las vistas adquieren por default el nombre de las columnas de la tabla que
la forman pero pueden definirse nombres a las columnas de las vistas en el momento de la
creación.
Cuando la vista contiene campos calculados o expresiones, deben definirse nombres para
las columnas. Estos nombres se definan entre paréntesis luego del nombre de la vista. A las
columnas con campos calculados se les denominan columnas virtuales.
Creación de vistas
CREATE VIEW vw_historia_academica
AS
SELECT
nota,
estado….
FROM
sga_detalle_acta,
sga_equiv_otorgada, sga_examenes_equiv WHERE ……….;
CREATE VIEW vw_cursadas (legajo, Apellido, cant_mat_inscriptas)
AS SELECT legajo, apellido, count(*) FROM sga_insc_cursadas
WHERE
periodo_lectivo=”PRIMER
CUATRIMESTRE”
anio_lectivo=”2005” GROUP BY 1,2 ORDER BY 2 ;
Administración y Optimización de Bases de Datos -Informix Dynamic Server
30
AND
Informix
Borrado de una vista
Las vistas no admiten modificaciones, para ello deben borrarse y volver a crearse.
Drop view vw_cursadas;
Consulta de una vista
El tratamiento de las vistas para las consultas es igual al de una tabla.
Select * from vw_historia_academica
Restricciones
Las vistas tienen sus desventajas respecto de las tablas dadas por sus restricciones:
•
No se pueden crear índices
•
Depende de la tabla subyacente
•
Se deben tener privilegios de select sobre las columnas de la tabla para utilizarlas
en las vistas.
•
No se puede usar insert, update o delete cuando la vista tiene :
o
join
o
una función agregada
o
una columna virtual
Cláusula With check option
La cláusula with check option, se utiliza para evitar que a través de una vista se ingresen
valores a los campos de datos que no pertenecen al conjunto de datos de la vista
Create view vw_codigos_postales as select * from mug_codigos where
Codigo in (“5000”, “5100”, “5200”) with check option.
Sólo dejará insertar o actualizar filas para los códigos postales 5000, 5001, 5002.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
31
Informix
Unidad 12 - Migración, Utilitarios para cargar y descargar datos
Dbexport
Dbexport= baja una Bd entera dentro de archivos ASCII. Puede generar un único archivo
que contiene toda la base de Datos o generar un archivo de esquema y uno por cada tabla
perteneciente a la Base de Datos. Estos archivos pueden direccionarse a disco o a cinta.
Sintaxis:
Dbexport – t \dispositivo de cinta – b bloque en KB – s Tamaño_cinta en KB nombre_BD
Dbexport - o\ (path ) nombre_BD
Dbimport
Dbimport = levanta archivos ASCII desde disco o cinta y crea la BD con sus tablas y datos.
Utiliza el archivo de esquema y de datos generados por el DBEXPORT.
Sintaxis:
Dbimport – t \dispositivo – b bloque – s Tamaño_cinta nombre_BD
Dbimport – i \(path) nombre_BD
– d dbspace - l.
– d dbspace -l unbuffered.
Dbload
Dbload = carga datos desde archivos ASCII a tablas existentes. El archivo de carga es un
archivo ASCII en donde las columnas están separadas por un delimitador definido. Por default el
delimitador es el | (pipe).
Sintaxis:
Dbload – c \ (path y archivo de comandos) – d (nombre BD) – l (archivo de errores) –e
(número de errores)
Archivo de Comandos del dbload:
Ejemplo1:
File “sga_insc_cursadas.unl”
legajo
1-10,
materia 11-20;
Insert into sga_ins_cursadas values (legajo,materia);
Ejemplo2:
File “sga_examenes.unl” delimiter "|" 20;
Insert into sga_detalle_acta;
Administración y Optimización de Bases de Datos -Informix Dynamic Server
32
Informix
Load
LOAD es un comando SQL y se usa para cargar datos desde archivos ASCII a una tabla.
Dicha tabla puede tener datos cargados previamente. Los datos a ingresar deben cumplir con
todas las restricciones de la tabla.
Sintaxis:
LOAD FROM "Path/archivo.unl" insert into sga_insc_cursadas;
Unload
UNLOAD es un comando SQL y se usa para descargar datos desde un query en archivos
ASCII. Los datos a descargar son el resultado de una consulta entre una o varias tablas.
Sintaxis:
UNLOAD
TO
"Path/archivo.unl"
select
*
from
sga_insc_cursadas
anio_academico=”2005”;
Administración y Optimización de Bases de Datos -Informix Dynamic Server
33
where
Informix
Unidad 13 - Backups
BACKUPS
Un backup del Online es el proceso de copia ya sea de un subset de dbspaces o de toda la
instancia y logical logs a un dispositivo secundario, disco local o dispositivo óptico. El proceso de
backup nos garantiza una imagen consistente de los datos en el momento que es creado mientras
el sistema esta en línea, en modo multiusuario o en ejecución transaccional.
ONTAPE
El motor ofrece dos utilitarios para realizar backups el OnBar y el Ontape. Estos permiten el
backup del logical logs y el de toda la instancia. Pero se deberá tener en cuenta que no puede
utilizar cintas de una utilidad con la otra.
El ontape
ofrece un archive de toda la instancia, backup del logical logs y modo de
restaurar. El mismo posee una interfaz de línea de comando y debe ser ejecutado por el usuario
“informix” o pertenecer al grupo informix-admin.
El comando ontape permite:
•
Archive completo de la instancia para que en caso de un fracaso, se pueda recrear
el sistema completo.
•
Archive Incremental para proporcionar un ambiente de backup flexible y planear un
horario del archive que satisfaga las necesidades de su sistema.
•
Definición de N dispositivos de cinta separados para que puedan ser realizados los
backups de logical logs.
•
Backup de logical logs continuo que se puedan realizar backups automáticos de
logical logs cuando estos se llenen.
•
Restore de la instancia completa y a nivel dbspace .
Administración y Optimización de Bases de Datos -Informix Dynamic Server
34
Informix
Niveles de backup
El motor proporciona tres niveles diferentes de backup. Estos son:
Nivel-0, Nivel-1 y Nivel-2.
•
Nivel-0: Un archive de nivel-0 contiene una copia de todos los datos de la instancia
en el momento que se realizo el backup.
•
Nivel-1: Un nivel-1 contiene una copia de todas las páginas que fueron modificadas
desde el último nivel-0.
•
Nivel-2: Un archive de Nivel-2 contiene todos los datos que han cambiado desde
el último nivel-1.
El comando para realizar este tipo de backup es:
Ontape –s
Se le pueden agregar distintos parámetros para los propósitos deseados como:
-L
n dónde n indica el nivel de backup (0, 1 o 2)
-U <Base>
Cambia el modo de la base de datos a Unbuffered Logging
-N <Base>
Cambia el modo de la base de datos a Not Logging
Ejecución del backup
Al ejecutar el ontape –s nos presentará lo siguiente:
Please enter the level of archive to be performed (0, 1, or 2)
En esta instancia deberemos indicarle el nivel del backup
Luego nos solicitara que montemos la cinta en el dispositivo configurado en el $ONCONFIG
Please mount tape 1 on /users/informix/backup and press Return to continue ...
Una vez montado, presionar Enter y comenzará a realizar el backup
Una vez finalizado nos indicará hasta que logical log ha backupeado
Program over es el indicativo que el backup ha finalizado.
Administración y Optimización de Bases de Datos -Informix Dynamic Server
35
Informix
Backup de logical logs
El backup de logical logs puede ejecutarse de dos maneras: Backup automático o Contínuo.
Backup Automático
Es explícitamente inicializado y archivarán los logical logs que se encuentren llenos,
deteniéndose en el logical log actual. Este método es recomendado para realizar backup de
logical logs en forma frecuente.
Backup Continuo
Es mas conveniente cuando se dispone de un dispositivo dedicado para la realización de los
mismos. Este se activara en el momento que se llene un logical log.
Sintaxis:
ontape –a
Backup automtico de logical logs
ontape –c
Backup continuous de logical logs
Política de backup
Es recomendable aplicar una política de backups para resguardar la información de las
instancias eficientemente. Dependiendo de los tiempos de escritura del dispositivo, es conveniente
realizar un backup de nivel 0 o sea, completo de toda la instancia además de uno continuo de
logical logs.
Backups Incrementales (Archives Incrementals)
Nivel 0
Nivel 1
Nivel 2
Dependiendo de los tiempos de las pruebas, puede adoptarse la opción de realizar un
backup de nivel 0 en la semana e incrementales el resto de los días.
Restore
El restore es un proceso de consta de 2 etapas, el restore físico y el de logical logs. En el
restore físico, se restauraran los datos ya previamente comitidos desde el ultimo backup de nivel
0, luego, en el caso que se requiera, solicitara el de nivel 1, 2, etc..
Administración y Optimización de Bases de Datos -Informix Dynamic Server
36
Informix
Una vez completo este proceso, requerirá los logical logs para restaurar las transacciones
que fueron ejecutadas desde el ultimo backup de todo el sistema, por lo que se deberá proveer la
cinta de logical logs para que la instancia quede consistente hasta la última transacción que fue
comitida.
Restaurar logical logs es un proceso lento por lo que es conveniente realizar backups de los
dbspaces completos frecuentemente para que en el momento que se deba ejecutar un restore,
haya menos transacciones para aplicar un rollforward.
Restore físico es cuando se restaura desde archivos de nivel 0, 1 ó 2.
Restore lógico es cuando se restaura desde archivos de logical logs.
Ejecución del restore
Para restaurar un dbspace:
Ontape –r dbspace
Para restaurar toda la instancia deberá estar en modo Off-Line.
Una vez ejecutado el ontape –r nos presentara esta leyenda.
Please mount tape 1 on /users/informix/backup and press Return to continue ...
Si el dispositivo es el correcto, presionar Enter y el programa ontape continuara
A continuación se presenta la arquitectura del disco que se tenía al momento de realizar el
archive. Se recuerda que los discos deben tener exactamente la misma configuración, sino ell
archive abortará.
Dbspaces
number
flags
fchunk
nchunks flags
owner
name
1
1
1
1
N
informix
rootdbs
2
1
2
1
N
informix
dbspace1
3
1
3
1
N
informix
datosdbs
chk/dbs
offset
size
free
bpages
flags
pathname
1
1
5
10000
41
PO-/users/informix/chunks/cook1
2
2
0
5000
2516
PO-/users/informix/chunks/cook2
3
3
0
5000
4603
PO-/users/informix/chunks/cook3
Chunks
Administración y Optimización de Bases de Datos -Informix Dynamic Server
37
Informix
Consultará si continúa el restore.
Continue restore? (y/n) y
En este punto, nos da la opción de realizar un backup de logical logs si es que no fue
realizado, se recomienda esta opción.
Do you want to back up the logs? (y/n)n
Una vez finalizado el archive 0, preguntara si existe alguno de nivel 1 o nivel 2 a restaurar.
Restore a level 1 or 2 archive (y/n) n
Si es que se posee de cintas de logical logs a restaurar, la opción debe ser y.
Do you want to restore log tapes? (y/n)n
Finalización del programa ontape. La base quedara en modo Quiescent.
Program over.
Parámetros de configuración de ontape
Los dispositivos de la cinta o path del archivo para realizar backups se definen en el archivo
de configuración $ONCONFIG.
El parámetro TAPDEV específica el dispositivo de la cinta que se usa para realizar un
backup completo al utilizar la herramienta ontape, mientras que el parámetro LTAPEDEV
específica el dispositivo para realizar backup de logical logs. Para cada tipo de dispositivo de la
cinta, se deberá especificar los siguientes campos:
TAPEBLK Tamaño de bloque de cinta a ser usado.
TAPESIZE Tamaño de la cinta.
Ej:
TapeDev:
f:\archive\backup
TapeBLK:
16
Tapesize:
10240
Ltapedev:
f:\archive\logs
LtapeBLK:
16
Ltapesize:
10240
/nul
Administración y Optimización de Bases de Datos -Informix Dynamic Server
38
Descargar