Página de inicio - Tecla de acceso: 1
Notas técnicas

MultiBase. Notas a la versión 1.0 release 4.0

Optimizador CTSQL

Cada sentencia de consulta (QUERY) que recibe el CTSQL, una vez analizada sintácticamente, es sometida a una fase de optimización. La finalidad de ésta es establecer la estrategia más idónea de acceso a los datos de la BD involucrados, reduciendo así el tiempo de respuesta. El optimizador de CTSQL define esa estrategia en base a los siguientes tipos de factores:

a) Índices existentes
Si se establece una condición de comparación por la columna de un índice simple o condiciones consecutivas (AND/OR) por columnas de un índice compuesto en el orden de sus componentes e incluyendo desde la primera, la sentencia es optimizable. Este acceso ofrece mayor rapidez siempre que el número de filas obtenidas sea sensiblemente menor que el de las filas de la tabla. Si este número es similar, el rendimiento puede llegar a degradarse, siendo entonces preferible un acceso secuencial. Éste puede provocarse incluyendo una condición no optimizable (es decir, evitando el uso de índices).

Ejemplo:

where ( albaran > 10 { utilizaría índice }
or 1 = 0)            { condición false }

Esta condición anularía el acceso por índice sin alterar el significado ni el resultado de la consulta.

b) Número de filas
El número de filas de una tabla es utilizado particularmente en las consultas con enlaces (JOINS). Este valor se actualiza mediante la instrucción UPDATE STATISTICS y se almacena en la columna "nrows" de la tabla "systables".

c) ROW ID
El "row id" es el número de fila en una tabla. Es el acceso más rápido a la misma, por lo que su uso es prioritario (ver más adelante).

d) Operación de JOIN
Si las columnas implicadas en el JOIN son componentes de índices, se utilizará éste tal como se ha explicado más arriba. Ante la posibilidad de elegir entre varias tablas, el acceso se realizará bajo las siguientes prioridades:

Si más de una tabla permite este acceso por índice, entonces se tomará como válido el orden que se establezca en la cláusula FROM, debiendo pues indicar primero aquellas de las que presumiblemente se obtendrán menos filas.

Prioridades del optimizador

Así pues, debe tenerse en cuenta que se mejorará el rendimiento de las consultas si:

Sistema de Traducción de T2 a MultiBase

Los pasos a realizar para la traducción de aplicaciones T2 son, esquemáticamente, los siguientes:

Ficheros instalados

La lista de ficheros instalados con su copia de MultiBase está disponible en los ficheros "$TRANSDIR/etc/ctlfiles" o "$TRANSDIR/etc/rtfiles", dependiendo de que sea versión de Desarrollo o Run-Time respectivamente.

Instalación de la "llave"

Cada copia de distribución de MultiBase para sistema operativo UNIX en plataformas PC 386/486 se suministra con un dispositivo de protección que debe ser conectado a un puerto serie del sistema. Para poder ejecutar cualquier programa es preciso haber definido la variable de entorno DBKEY con el nombre del dispositivo asociado, o bien, enlazar uno nuevo de nombre "/dev/ttymbk" a dicho dispositivo.

Ejemplo:

$ DBKEY=/dev/tty02
$ export DBKEY

o

$ ln /dev/tty02 /dev/ttymbk

NOTA: El dispositivo debe estar inhabilitado como terminal (poner status off con sysadm o directamente en el fichero /etc/inittab); asimismo, debe ser accesible (rw) para todos los usuarios.

Conexión interna de la llave en conector de 25 pines:

Pin Señal Entrada/Salida
2 TXD S
3 RXD E
20 DTR S
6 DSR E
8 DCD E
4 RTS S
5 CTS E

Internamente se hallan interconectados:

20 con 6 y 8
4 con 5

Límites de MultiBase

CTLCOMP (compilación por módulo)

Streams definidos 40
Etiquetas de error en un bloque (FUNCTION, ON ACTION, etc.) 20
JOINS por FORM 8
Tablas contenidas en la sección JOINS 11
Parejas de columnas enlazadas incluyendo los componentes de COMPOSITES 30
SCREENS por FORM/FRAME 20
Páginas de todos los SCREENS por FORM/FRAME 20
Variables locales más argumentos por función definida 40
Etiquetas de tablas (label) por FORM 40
Relaciones Cabecera-Líneas por FORM 40
LOOKUPS por FORM 20
Definiciones de MENUS 40
Ayudas en FORMS/FRAMES 40
Tablas por FORM 20
Funciones de usuario definidas 100
Campos de un bloque de control 20
Anidamientos de INCLUDES 5
Anidamientos de la instrucción SWITCH 100
Anidamientos de instrucciones iterativas 100
Longitud de un string entrecomillado constante 256
Longitud de un identificador 50

CTL (ejecución por módulo)

Parámetros de una función 20
Longitud de los argumentos en RUN 1.024
Longitud del título para PUT EVERY ROW 250
Longitud editable para un campo 160
Longitud total de las variables globales 32.767

CTL −G (depurador)

Breakpoints 20
Breakpoints condicionales 20
Niveles de traza que se muestran en pantalla 16

ISAM

Longitud de un índice 120
Valores duplicados para un índice 32.768

CTSQL

Tablas bloqueadas simultáneamente con LOCK TABLE 50
Longitud del nombre de una tabla SQL 18
Longitud del nombre de una columna SQL 18
Longitud del nombre usuario 8
Número máximo de claves referenciales para una tabla 15

Descripción de secuencias Termcap

El apéndice E.1. del Manual de Referencia debe ser sustituido por la lista siguiente:

Valores numéricos (precedidos de #):

Secuencias generadas por el teclado:

Secuencias enviadas a pantalla:

Booleanos (su valor por defecto es false si no están definidos o tienen el signo @ [arroba]; cualquier otro caso es true):

« »