Descargar

Sistema de base de datos relacionales – "Teradata database" (página 4)


Partes: 1, 2, 3, 4

LA DECLARACIÓN EXPLAIN

Teradata SQL provee una muy poderosa sentencia EXPLAIN que permite ver el plan de ejecución de una consulta.

La sentencia EXPLAIN no sólo explica cómo una sentencia será procesada, proporciona una estimación del número de las filas implicadas y del impacto en el funcionamiento de la consulta.

Ejemplo de EXPLAIN con un simple "Join Index"

CREATE TABLE customer (

c_custkey INTEGER,

c_name CHAR(26),

c_address VARCHAR(41),

c_nationkey INTEGER,

c_phone CHAR(16),

c_acctbal DECIMAL(13,2),

c_mktsegment CHAR(21),

c_comment VARCHAR(127)

)

UNIQUE PRIMARY INDEX( c_custkey );

CREATE TABLE orders (

o_orderkey INTEGER NOT NULL,

o_custkey INTEGER,

o_orderstatus CHAR(1),

o_totalprice DECIMAL(13,2) NOT NULL,

o_orderdate DATE FORMAT 'yyyy-mm-dd' NOT NULL,

o_orderpriority CHAR(21),

o_clerk CHAR(16),

o_shippriority INTEGER,

o_commment VARCHAR(79)

)

UNIQUE PRIMARY INDEX(o_orderkey);

CREATE TABLE lineitem (

l_orderkey INTEGER NOT NULL,

l_partkey INTEGER NOT NULL,

l_suppkey INTEGER,

l_linenumber INTEGER,

l_quantity INTEGER NOT NULL,

l_extendedprice DECIMAL(13,2) NOT NULL,

l_discount DECIMAL(13,2),

l_tax DECIMAL(13,2),

l_returnflag CHAR(1),

l_linestatus CHAR(1),

l_shipdate DATE FORMAT 'yyyy-mm-dd',

l_commitdate DATE FORMAT 'yyyy-mm-dd',

l_receiptdate DATE FORMAT 'yyyy-mm-dd',

l_shipinstruct VARCHAR(25),

l_shipmode VARCHAR(10),

l_comment VARCHAR(44)

)

PRIMARY INDEX( l_orderkey );

La siguiente instrucción define un "join index" sobre estas tablas:

CREATE JOIN INDEX order_join_line AS SELECT (

l_orderkey, o_orderdate, o_custkey, o_totalprice

), (

l_partkey, l_quantity, l_extendedprice, l_shipdate

)

FROM lineitem

LEFT JOIN orders ON l_orderkey = o_orderkey

ORDER BY o_orderdate

PRIMARY INDEX (l_orderkey);

La siguiente demostración de EXPLAIN muestra como el optimizador usó el recientemente creado "join index" order_join_line, aun cuando allí no es ninguna referencia al índice en el texto SQL.

EXPLAIN

SELECTo_orderdate, o_custkey, l_partkey, l_quantity,

l_extendedprice

FROM lineitem , orders

WHERE l_orderkey = o_orderkey;

Explanation

————————————————————–

1) First, we lock a distinct LOUISB."pseudo table" for read on a Row Hash to prevent global deadlock for LOUISB.order_join_line.

2) Next, we lock LOUISB.order_join_line for read.

3) We do an all-AMPs RETRIEVE step from join index table LOUISB.order_join_line by way of an all-rows scan with a condition of ("NOT (LOUISB.order_join_line.o_orderdate IS NULL)") into Spool 1, which is built locally on the AMPs. The input table will not be cached in memory, but it is eligible for synchronized scanning. The result spool file will not be cached in memory. The size of Spool 1 is estimated to be 1,000,000 rows. The estimated time for this step is 4 minutes and 27 seconds.

4) Finally, we send out an END TRANSACTION step to all AMPs involved in processing the request.

DESARROLLO THIRD-PARTY

La base de datos de Teradata soporta muchos productos de software de tercera persona. Los dos componentes generales de productos soportados incluyen los de la serie de Transparency y los productos nativos de interfaz.

Productos TS/API

El producto de la serie Transparency / Application Program Interface (TS/API) proporciona una entrada entre los productos DB2 (MVS/TSO) y SQL/DS (VM/CMS) y la base de datos de Teradata.

TS/API permite una declaración del SQL formulada para que DB2 o SQL/DS sea traducido a Teradata SQL para permitir que DB2 o SQL/DS tengan acceso a los datos almacenados en una base de datos de Teradata.

Capítulo VI: Distribución de los Datos y Métodos de Acceso

ÍNDICES DE TERADATA

Un índice es un mecanismo físico usado para almacenar y acceder a las filas de una tabla. Los índices en una base de datos relacional son muy parecidos al índice de un libro – aceleran el acceso a la información.

Teradata soporta los siguientes tipos de índices:

  • Primario
  • Secundario
  • Join
  • Hash

ÍNDICES PRIMARIOS

Teradata sólo requiere un índice primario para cada tabla. El método más eficiente de acceso es a través de los índices primarios.

Los índices primarios:

  • Afectan la distribución de filas.
  • No tienen subtablas.
  • Pueden ser únicos o no únicos.
  • Pueden ser particionados o no.

Índices primarios y Claves primarias

Los valores escogidos para un índice primario de una tabla son frecuentemente los mismos valores identificados como claves primarias durante la fase de modelamiento de datos, pero no siempre es así.

Clave primaria

Índice Primario

Las restricciones son usadas para asegurar la integración referencial

Un mecanismo físico de acceso

Requeridos por Teradata si la comprobación de integridad referencial es implementada

Requerido por Teradata

Debe ser única

Puede ser única

Los valores no pueden cambiar si se desea mantener la integridad de los datos

Los valores pueden cambiar

No puede ser nula

Puede ser nula

No implica un path de acceso

Implica paths de acceso

Causa que un índice primario unico deba ser creado

Tabla N° 36 Indices Primarios

ÍNDICES SECUNDARIOS

Permiten el acceso a la información en una tabla por caminos alternos, caminos menos frecuentes; para incrementar el rendimiento, evitando así las búsquedas completas en las tablas.

Los índices secundarios se agregan a la tabla, implica procesamiento auxiliar, pueden ser eliminados. Los índices secundarios:

  • No afectan la distribución de filas
  • Pueden ser únicos o no
  • Son usados por el Optimizador para incrementar el rendimiento

El sistema construye subtablas para todos los índices secundarios, esta subtabla contiene las filas que son asociadas con el valor del índice.

Índices Primarios vs Índices Secundarios

Característica

Primario

Secundario

¿Es requerida o no?

Ambos

No

Puede ser única o no única

Ambos

Ambos

¿Afecta la distribución de las columnas?

Si

No

¿Es creada y eliminada dinámicamente?

No

Si

¿Mejora el acceso?

Si

Si

¿Es creado usando muchas definiciones de datos?

Si

Si

¿Requiere una estructura física separada?

No

Si

¿Requiere procesamiento extra?

No

Si

Tabla N° 37 Tabla IP vs. IS

ÍNDICES "JOIN"

Es una estructura de indexación que contiene columnas de una o más tablas. Algunas consultas pueden ser satisfechas con solo examinar el índice "join". Son muy parecido a los índices secundarios, los índices "join" imponen procesamiento adicional en operaciones de inserción, eliminación o actualización.

  • Índice "join" de tabla-única, replica algunas o todas las columnas en otra tabla
  • Índice "join" de tabla-múltiple
  • Índice "join" agregado, ofrecen eficiencia extrema para cierto tipo de consultas.

ÍNDICES HASH

Proveen una estructura de eficiencia-espacio con relación a otros índices. Tiene las características similares a un índice join de tabla-única con un identificador por fila que provee acceso transparente a la tabla base.

ESPECIFICACIÓN DE ÍNDICES

Todas las tablas requieren un índice primario. Si no se especifica una columna o un set de columnas como el índice primario para la tabla, entonces CREATE TABLE especifica un índice primario por defecto.

Creando Índices

Para especificar un…

Se usa la declaración…

Y la cláusula…

Índice único primario UPI

CREATE TABLE

UNIQUE PRIMARY INDEX

Índice no-único primario NUPI

CREATE TABLE

PRIMARY INDEX

Índice único secundario USI

CREATE TABLE

INDEX

CREATE INDEX

Índice "join"

CREATE JOIN INDEX

Índice hash

CREATE HASH INDEX

Tabla N° 38 Especificación de Índices

Los índices también son creados cuando las restricciones PRIMARY KEY y UNIQUE son especificadas.

FORTALEZAS Y DEBILIDADES DE LOS ÍNDICES

Teradata no requiere que los usuarios le especifiquen que índice debe de usar.

El Optimizador de Teradata selecciona la alternativa más apropiada.

Los índices:

  • Pueden tener un impacto directo en todo el rendimiento de Teradata.
  • No es un proceso simple de realizar.
  • Es basado en parte en expectativas de uso.

Método de acceso

Fortalezas

Debilidades

Índice único primario UPI

  • Es el método más eficiente de acceso, cuando la declaración SQL contiene el valor del índice primario.
  • No requiere un archivo contenido en la base de datos
  • No requiere un archivo contenido en la base de datos cuando el número de filas retornadas es pequeño
  • Ninguno, mientras la(s) columna(s) se bien escogidas.

Índice no único primario NUPI

  • Provee un acceso eficiente cuando la declaración SQL contiene el valor del índice primario.
  • No requiere un archivo contenido en la base de datos cuando el número de filas retornadas es pequeño
  • Es lenta bajo un INSERT
  • Puede decrementar la eficiencia, cuando algunos valores se repiten muchas veces en las misma columna.

Índice único secundario USI

  • Provee un acceso eficiente cuando la declaración SQL contiene los valores de USI, y no se especifica valores de índices primarios.
  • No requiere un archivo contenido en la base de datos para un SELECT
  • Requiere costo adicional para INSERT, UPDATE, MERGE y DELETE

Índice no único secundario NUSI

  • Provee un acceso eficiente cuando el número de filas por valor en la tabla es pequeña
  • Puede requerir un archivo contenido en la base de datos.
  • Requiere costo adicional para INSERT, UPDATE, MERGE y DELETE
  • No será usada por el Optimizador de Teradata

Búsqueda completa de tabla

  • Accede a cada fila de la tabla a la vez
  • Provee acceso usando cualquier condición
  • Examina cada fila
  • Requiere un archivo contenido en la base de datos tan largo como la tabla

Tabla N° 39 Fortalezas y Debilidades de los índices

HASHING

Teradata usa hashing para distribuir los datos en el disco y usa índices para acceder a dichos datos. Debido a que la arquitectura de Teradata es masivamente paralela, requiere un medio eficiente de distribución y recuperación de información. Este método es el hashing.

Todos los índices en teradata son basados (o parcialmente basados) en filas-hash.

Capítulo VII: Objetos de la Base de Datos

VISTAS

Actualmente son tablas virtuales que pueden usarse para obtener datos definiendo columnas de vistas subyacentes y/o tablas.

Las vistas integran el Diccionario de Datos porque las definiciones de las vista son almacenadas allí. Las vistas simplifican el acceso a la información en Teradata.

Declaraciones SQL relacionadas con las Vistas

LA FUNCIÓN

PARA…

CREATE VIEW

* Nombrar la vista y las columnas en la vista

* Definir un SELECT sobre una o más columnas de otras tablas y/o vistas

REPLACE VIEW

Alterar las características de una vista existente

Tabla N° 40 Declaraciones SQL Relacionadas a Vistas

PROCEDIMIENTOS ALMACENADOS

Son ejecutados en el espacio del servidor Teradata, es una combinación de declaraciones SQL, y declaraciones de control.

Usando los procedimientos almacenados, se pueden construir grandes y complejas aplicaciones de base de datos.

Los procedimientos almacenados pueden contener:

  • Entrada múltiple y parámetros de salida
  • Variables locales y cursores
  • SQL DDL, DCL, DML y SELECT.

Las aplicaciones basadas en procedimientos almacenados proveen los siguientes beneficios:

  • Reducen el tráfico cliente-servidor, ya que los procedimientos almacenados residen en el servidor.
  • Permiten encapsulación y cumplimiento de las reglas en el servidor, contribuyendo al mantenimiento de las aplicaciones.
  • Proveen mejor control transaccional.
  • Proveen mejor seguridad.
  • Proveen un mecanismo manejador de excepciones.

Elementos de un procedimiento almacenado

Este elemento…

Incluye …

Declaraciones de control de SQL

Declaraciones compuestas anidadas o no anidadas

Declaraciones de control

DECLARE HANDLER para terminación y condiciones de excepción.

Pueden ser:

  • Del tipo CONTINUE o EXIT
  • Definido en SQLSTATE, o el manejador génerico de excepciones SQLEXCEPTION, o el manejador de condiciones de terminación NOT FOUND y SQL WARNING.

Declaraciones de cursor DECLARE CURSOR.

Declaraciones de variables DECLARE.

Declaraciones SQL para transacciones

DDL, DCL, DML y SELECT

Modificadores LOCKING

Soporta todas las declaraciones SQL excepto CALL

Corchetes y comentarios simples

Tabla N° 41 Procedimientos Almacenados

MACROS

Las macros consisten en una o más sentencias SQL que pueden ser ejecutadas con solo ejecutar una sentencia. Cada vez que la macro es ejecutada, una o más filas pueden ser retornadas.

Declaraciones SQL relacionadas con las macros

Use esta declaración…

Para…

CREATE MACRO

Incorporar código SQL frecuentemente usado dentro de una macro

EXECUTE

Correr una macro.

* Una macro también puede contener EXECUTE

DROP MACRO

Elimina una macro

Tabla N° 42 Declaraciones SQL relacionadas con las macros

A pesar del número de sentencias en una macro, Teradata las trata como un pedido simple. Cuando se ejecuta una macro, el sistema procesa todas las sentencias SQL, o no procesa ninguna. Si la macro falla, el sistema aborta, y retorna la base de datos a su estado original.

TRIGGERS

El trigger se dispara cuando otro evento ocurre. Este objeto es almacenado en el Diccionario de Datos, asociado a una tabla llamada tabla subject. Teradata cumple con las especificaciones ANSI SQL3 sobre triggers.

Los triggers se ejecutan automáticamente cuando una de las siguientes operaciones se ejecuta:

  • DELETE
  • INSERT
  • UPDATE

¿En qué momento se disparan?

Si se especifica…

Acción del trigger…

BEFORE

Se ejecuta antes del evento que disparó el trigger.

AFTER

Se ejecuta después de que el evento que disparó el trigger termine.

Tabla N° 43 Triggers

A veces una sentencia puede disparar un trigger, que en su turno, dispara otro trigger. Teradata procesa y optimiza en paralelo para maximizar el rendimiento del sistema.

Declaraciones SQL relacionadas a los triggers

Use esta declaración…

Para…

CREATE TRIGGER

Crear un trigger.

REPLACE TRIGGER

Cambiar la definición de un trigger si necesidad de borrarlo y volverlo a crear.

DROP TRIGGER

Eliminar la definición de un trigger de una tabla subject

HELP TRIGGER

Muestra los atributos del trigger especificado

SHOW TRIGGER

Muestra el texto usado para crear un trigger

ALTER TRIGGER

Activa, desactiva, o modifica el tiempo de creación de un trigger

* Es una extensión de SQL a las especificaciones ANSI

RENAME TRIGGER

Cambia el nombre de un trigger

Tabla N° 44 Declaraciones SQL Relacionadas Con Triggers

Elementos de un trigger

Elemento

Comentario

Nombre del Trigger

Debe ser único dentro de una base de datos, esto significa que un trigger y cualquier otro objeto de la base de datos no deben de tener el mismo nombre.

Activo/Desactivo

Cuando se deshabilita un trigger, la definición permanece en el Diccionario de Datos.

Para activar un trigger deshabilitado:

ALTER TRIGGER nombre_trigger ENABLED

* Es una extensión de Teradata

Nombre de la Tabla

El nombre de la tabla subject debe ser el nombre de una tabla base existente, no una vista, ni una tabla temporal, ni un índice join o un índice hash.

Momento de ejecución del Tigger

* BEFORE

* AFTER

Evento disparador

El evento es identificado por el tipo de sentencia que causa que el trigger se dispare:

Si el tipo de sentencia es…

Entonces la sentencia disparadora puede ser…

INSERT

  • INSERT
  • INSERT / SELECT
  • Atomic Upsert
  • MERGE INTO

UPDATE

  • UPDATE
  • Altomic Upsert
  • MERGE INTO

DELETE

  • DELETE

Nombre de la columna

Sólo aplicable cuando el evento disparador es un UPDATE

Orden

Cuando se definen múltiples triggers, se puede especificar el orden en que se ejecutarán.

Los valores del orden son enteros de 1 a 32567.

Tabla de transición y Filas de transición

La tabla de transición es una tabla temporal que contiene las filas de transición.

Las filas de transición almacenan los viejos y nuevos valores para las columnas de las cuales los datos serán modificados.

No son almacenadas en el Diccionario de Datos.

Cláusula REFERENCING

La cláusula realiza:

  • Permite que la condición WHEN se refiera a un set de filas en una tabla de transición.

Las reglas AFTER y BEFORE son:

  • AFTER sólo puede referenciar tablas transicionales.
  • BEFORE sólo puede referenciar filas transicionales.

Acción del trigger

  • WHEN es una condición opcional de búsqueda
  • Los triggers recursivos están permitidos.

Sentencia SQL

Generalmente comprende una sola sentencia o un bloque de sentencias.

Tabla N° 45 Elementos de Un Trigger

Restricciones de los triggers

Restricción

Comentario

Un cursor no dispara un trigger

Se recibiría un mensaje de error

No se puede definir triggers, índices join o índices hash en la misma tabla

El límite para la recursividad de un trigger es de 16 niveles

Se recibiría un mensaje de error

Tabla N° 46 Relaciones de los triggers

EL DICCIONARIO DE DATOS

Es un set de tablas del sistema que contienen datos acerca de las bases de datos, de los usuarios y las propiedades de éstos, también contiene información administrativa acerca de la base de datos Teradata.

El Diccionario de Datos contiene definiciones actuales, información de control y información general acerca de:

  • Bases de datos
  • Usuarios finales
  • Roles
  • Reglas
  • Perfiles
  • Cuentas
  • Tablas
  • Vistas
  • Columnas
  • Índices
  • Restricciones
  • Sesiones y atributos de sesión
  • Triggers
  • Derechos de acceso
  • Espacio de disco
  • Eventos
  • Uso de recursos
  • Macros
  • Procedimientos almacenados
  • Logs
  • Traducciones
  • Set de caracteres
  • Estadísticas
  • Procedimientos almacenados extendidos
  • Autorizaciones
  • Funciones definidas por el Usuario – UDF
  • Tipos Definidos por el Usuario – UDT
  • Métodos Definidos por el Usuario – UDM

A continuación se detalla acerca de que información es almacenada:

Cuando creas …

En el Diccionario de Datos se almacena…

una tabla

  • El nombre de la tabla y su ubicación
  • El nombre de la base de datos, del creador y del usuario
  • Cada columna de la tabla, incluyendo su nombre, el tipo de dato y la longitud
  • Los privilegios de acceso del usuario/creador sobre la tabla
  • Los índices definidos sobre la tabla.
  • Las restricciones definidas sobre la tabla
  • Día y hora cuando el objeto fue creado
  • Un back-up de la tabla y protección

una base de datos

  • El nombre de la base de datos, el nombre del creador, el nombre del propietario y el nombre de la cuenta.
  • La asignación de espacio

* permanente

* contenido en la base de datos

* temporal

  • Numero de tablas
  • El password para cambiar la base de datos
  • Tiempo de creación
  • Roles y perfil
  • Día y hora que la base de datos fue alterada y el nombre del que la alteró
  • Un identificador único para el nombre de las UDFs

un usuario

  • El nombre del usuario, el nombre del creador y el nombre del propietario
  • El día y la hora en que el password fue modificado.
  • La asignación de espacio

* permanente

* contenido en la base de datos

* temporal

  • La cuenta por defecto, base de datos, set de caracteres y formato de fecha.
  • Tiempo de creación
  • Nombre y tiempo de modificación de la última alteración hecha al usuario
  • Roles y perfil

una vista o macro

  • El texto de la vista o macro
  • Atributos de creación
  • Privilegios de acceso de usuario y creador

un procedimiento almacenado

  • Atributos de creación
  • Parámetros incluyendo los nombre, el tipo, el tipo de datos y el formato por defecto
  • Privilegios de acceso de usuario y creador

un trigger

  • Los IDs de:

* tabla

* trigger

* base de datos y tabla subject

* usuario que creó los triggers

* usuario que actualizó últimamente los triggers

  • El tiempo de la última actualización
  • Índices
  • El nombre del trigger y:

* el estado del trigger (activo)

* los eventos que disparan el trigger

* el orden de disparo del trigger

  • Set de caracteres por defecto
  • Tiempo de creación
  • Tablas fallback

una función definida por usuario UDF

  • Nombre de la función, nombre de la base de datos, nombre específico
  • Número, tipo de datos y estilo de los parámetros
  • ID, tipo de función y nombre externo
  • Lenguaje en la que ha sido elaborada
  • Tipo de caracteres
  • Referencia externa a archivo
  • Plataforma

un método definido por usuario UDM

  • Nombre, base de datos, nombre específico.
  • Número, tipo de datos, y estilo de parámetros.
  • ID, tipo de función y nombre externo.
  • Tipo de caracteres
  • Referencia externa a archivo
  • Plataforma

un tipo de dato definido por usuario UDT

  • Nombre, base de datos, nombre específico
  • Número, tipo de datos, y estilo de parámetros.
  • ID, tipo de función y nombre externo.
  • Tipo de caracteres
  • Referencia externa a archivo
  • Plataforma

Tabla N° 47 Listado de diccionario de datos almacenables

VISTAS DEL DICCIONARIO DE DATOS

Se puede examinar la información en las tablas de sistema en la base de datos DBC directamente o a través de una serie de vistas.

El administrador de la base de datos controla quien tiene acceso a las vistas.

La siguiente tabla define la información necesitada por varios tipos de usuarios:

Este tipo de usuario…

Necesita saber…

Final

  • Objetos a los cuales tiene acceso
  • Tipos de acceso disponibles para el usuario
  • Derechos de acceso

Supervisor

  • Cómo crear y organizar las bases de datos
  • Cómo monitorear el uso del espacio
  • Cómo definir nuevos usuarios
  • Cómo asignar los privilegios de acceso
  • Cómo crear índices
  • Cómo llevar a cabo las operaciones de archivamiento

Administrador de la Base de Datos

  • Rendimiento
  • Estado y estadísticas
  • Errores
  • Cuentas

Administrador de seguridad

  • Reglas de control de acceso (logging)
  • Resultados de accesos viendo eventos, reportes especificadas en las reglas de control de acceso

Control de operaciones

  • Archivar y recuperar actividades

Tabla N° 48 Vistas del diccionario de datos

Acceso SQL al Diccionario de Datos

Cada vez que se ingresa a la base de datos Teradata, o se usa una consulta SQL, o se escribe un password, se usa el Diccionario de Datos.

Por razones de seguridad, sólo se puede usar la declaración SELECT. No se puede modificar de ninguna manera el Diccionario de Datos.

CONTROL DE CONCURRENCIA Y RECUPERACIÓN DE LAS TRANSACCIONES

El control de concurrencia previene que varios procesos de forma incorrecta inserten, borren o modifique los mismos datos. Se mantiene un control de concurrencia a través de dos mecanismos:

  • Transacciones
  • Locks

TRANSACCIONES

Son obligatorios para mantener la integridad de la base de datos mientras se efectúan muchas operaciones concurrentes.

Una transacción es una unidad lógica de trabajo y una unidad de recuperación. Las transacciones son atómicas: una transacción parcial no existe.

Teradata soporta:

  • Semántica de transacciones ANSI
  • Transacciones Teradata

TRANSACCIONES ANSI

Todas las transacciones ANSI son implícitas. Cualquiera de los siguientes eventos abre una transacción ANSI:

  • Ejecución de la primera sentencia SQL en una sesión.
  • Ejecución de la primera sentencia luego de cerrar una transacción previa.

La transacción se cierra cuando se ejecuta una sentencia COMMIT, ROLLBACK o ABORT.

En el modo ANSI, el sistema da vuelta atrás a la transacción entera si el pedido actual:

  • Resulta en un punto muerto
  • Ejecuta una sentencia DDL que aborta
  • Ejecuta una sentencia explícita: ROLLBACK o ABORT.

TRANSACCIONES TERADATA

Las transacciones pueden ser implícitas o explícitas. Una macro es un ejemplo de una transacción implícita.

SENTENCIAS BEGIN TRANSACTION / END TRANSACTION

Una transacción explícita es cuando varias sentencias están delimitadas con BEGIN TRANSACTION / END TRANSACTION. Todas las demás transacciones son implícitas.

BEGIN TRANSACTION;

DELETE FROM Employee

WHERE Name = ‘Smith T’

;

UPDATE Department

SET EmpCount=EmpCount-1

WHERE DeptNo=500

;

END TRANSACTION;

Si ocurre un error durante el procesamiento del DELETE o el UPDATE, el sistema restaura ambas tablas a sus estados anteriores. Si un error ocurre durante una transacción Teradata, el sistema vuelve atrás la transacción entera.

LOCKS

Un lock es un medio de petición de derechos a algún recurso. Teradata puede asegurar muchos diferentes tipos de recursos de diferentes formas. Se puede anular algunos locks haciendo ciertas operaciones. El requerimiento de integridad de datos decide que tipos de lock el sistema va a usar.

La siguiente figura muestra un ejemplo de por qué se necesitan los locks.

Figura N° 8 Necesidad de Locks

Este ejemplo demuestra el problema más común encontrado en el proceso de transacciones sin locks.

Teradata permite asegurar los siguientes objetos:

Objeto

Descripción

Base de Datos

Asegura todas las filas de todas las tablas en la base de datos

Tabla

Asegura todas las filas en la tabla y cualquier índice en las tablas fallback

Fila hash

Asegura la copia primaria de una fila y todas las filas que tienen el mismo código hash dentro de la misma tabla.

Tabla N° 49 Aseguramiento de de objetos

Un usuario puede asegurar (lock):

  • Base de datos
  • Tabla
  • Fila hash

Tipos de seguros (lock)

Existen cuatro:

Tipo de lock

Descripción

Exclusivo

El proceso que lo pide tiene derechos exclusivos sobre el recurso asegurado. Cualquier otro proceso no puede leer, escribir, o acceder al recurso asegurado.

Escribir

El proceso que lo pidió tiene derechos exclusivos sobre el recurso asegurado, excepto para lecturas.

Leer

Durante éste el sistema no permite la modificación de ese recurso.

Acceder

Permite las modificaciones de los datos mientras la operación SELECT está en progreso.

Tabla N° 50 Tipos de Locks

La siguiente tabla muestra de mejor manera estos tipos de lock:

Pedido de lock

Tipo de lock

Ninguno

Acceder

Leer

Escribir

Exclusivo

Acceder

Concedido

Concedido

Concedido

Concedido

NO

Leer

Concedido

Concedido

Concedido

NO

NO

Escribir

Concedido

Concedido

NO

NO

NO

Exclusivo

Concedido

NO

NO

NO

NO

Tabla N° 51 Manipulación de Locks

NIVELES DE LOCK EN LA BASE DE DATOS

Sentencia SQL

Nivel de lock por el tipo de acceso

Modo de lock

UPI/NUPI/USI

NUSI/Busq. completa

SELECT

Row hash

Tabla

Leer

UPDATE

Row hash

Tabla

Escribir

DELETE

Row hash

Tabla

Escribir

INSERT

Row hash

No aplicable

Escribir

CREATE DATABASE

DROP DATABASE

MODIFY DATABASE

No aplicable

Database

Exclusivo

CREATE TABLE

DROP TABLE

ALTER TABLE

No applicable

Tabla

Exclusivo

Tabla N° 52 Niveles de Locks

DEADLOCKS Y RESOLUCIÓN

Un deadlock se produce cuando una transacción 1 pone un lock sobre un recurso A, y entonces necesita poner un lock a un recurso B. Pero este recurso ya ha tiene puesto un lock por una transacción 2, quien a su turno necesita poner un lock al recurso A. A este estado se denomina deadlock y se resuelve abortando una de las dos transacciones y haciendo un ROLL BACK para esa transacción.

Las transacciones juegan un rol muy importante en el proceso porque son usadas para "retroceder hacia atrás" una serie de actualizaciones a la base de datos.

RECUPERACIÓN DE MEDIOS Y DE SISTEMA

Restarts

Se produce por una de las siguientes razones:

  • AMP o falla de disco
  • Falla en el software
  • Error de paridad

Recuperación de Transacción

Dos tipos de una recuperación automática de transacción:

  • Recuperación de una transacción
  • Recuperación de la Base de Datos

HERRAMIENTAS DE ANÁLISIS DE CONSULTA DE TERADATA

TERADATA VISUAL EXPLAIN

Es una herramienta visual que describe el plan de ejecución de complejas sentencias SQL de una manera simplificada.

Cuando se especifica el modificador EXPLAIN en la sentencia SQL, Teradata Visual EXPLAIN presenta una vista gráfica de las sentencias rotas en pasos discretos mostrando el flujo de datos durante la ejecución.

El plan de ejecución primero debe ser capturado con Query Capture Database (QCD) por medio de Query Capture Facility (QCF).

TERADATA STATISTICS WIZARD

Es una herramienta gráfica que ha sido desarrollada para mejorar el rendimiento de las consultas y de la base de datos haciendo pruebas estadísticas de los resultados de cada operación.

Se puede…

Descripción

Seleccionar un workload

Analiza y recibe recomendaciones basadas en los resultados

Seleccionar una base de datos, o varias tablas, índices o columnas

Analiza y recibe recomendaciones basadas en los resultados

Aplazar

El programa para recolectar estadísticas

Mostrar y modificar estadísticas

De una columna o un índice

Recibir recomendaciones

Los análisis están basados en heurísticas

Tabla N°53 Asistente de Estadísticas

RECOMENDACIONES

El presente trabajo fue desarrollado usando como referencia la información encontrada en el sitio web de Teradata () bajo la versión V6 Release 6.1; este no es un trabajo integramente completo que describe el comportamiento del sistema, sino por el contrario, es solo un resumen.

BIBLIOGRAFÍA

Teradata Library

http://www.teradata.com/t/go.aspx/?id=114

Fecha de acceso 2/Junio/2006

Wikipedia

http://en.wikipedia.org/wiki/Main_Page

Fecha de acceso 2/Junio/2006

 

TRABAJO REALIZADO POR LOS ESTUDIANTES:

Sanchez Guerra, Rudy Wilson

Mamani Humpiri, Luis Miguel

Universidad Nacional del Altiplano Puno – Peru

Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Base de Datos.

Partes: 1, 2, 3, 4
 Página anterior Volver al principio del trabajoPágina siguiente