Tablas

Conjunto de comandos relativos al mantenimiento de tablas.

Compactar tabla

Comando de instrucción de proceso que nos permite compactar el fichero de datos de una tabla y su contenedor.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Identificador de tabla

Podemos seleccionar, o bien una tabla en concreto o bien la opción todas.

Si seleccionamos una tabla, compactará solamente el fichero de datos y el contenedor (en el caso de que tenga campos objeto) de la tabla seleccionada. Si seleccionamos la opción todas, compactará todas las tablas de la instancia, tanto del proyecto actual como de los proyectos heredados.

Tipo de compactación

Nos permite indicar qué es lo que queremos compactar. Los valores posibles son:

  • Ficheros de datos (dat/idx): solamente compactará el fichero de datos.

  • Contenedor de datos (cnd/cni): solamente compactará el contenedor (donde se guardan los campos objeto).

  • Ficheros (dat/idx) y contenedor de datos (cnd/cni): compactará tanto datos como contenedor.

Umbral mínimo (%)

Expresión de tipo fórmula cuyo resultado numérico es el valor mínimo que debe alcanzar el % de registros vacíos de la tabla para que se dispare la compactación.

Identificador de variable local booleana de retorno de ok (Opcional)

Variable local del proceso, de tipo booleano, en el que se retornará si la compactación se ha ejecutado (1) o no (0).

Funcionalidad

Compactar el fichero de datos de una tabla y su contenedor.

Comentarios

Cuando en una tabla borramos un registro, Velneo mantiene el espacio físico que este ocupaba en disco, espacio que será reaprovechado por un registro que se cree en la tabla con posterioridad.

Este es el motivo por el que, si borramos un gran número de fichas de una tabla, el tamaño del fichero no varía.

Este comando, por tanto, será de utilidad cuando detectemos que en una tabla hay muchos huecos ya que reducir el tamaño físico de los ficheros.

Antes de ejecutar este comando habrá que asegurarse de que no haya usuarios o procesos haciendo consultas o escribiendo en la tabla cuyos índices se desean regenerar.

Al finalizar la compactación, Velneo vServer usará el refresco terciario para comunicar la limpieza de caché de tablas a todos los clientes.

Este comando de instrucción de proceso recomendamos ejecutarlo en modo mantenimiento.

Este comando de instrucción de proceso no es funcional en primer y segundo plano.

Este comando de instrucción de proceso solamente es funcional en Velneo vServers cloud y en Velneo vServers locales licenciados con licencia estándar o con licencia con suscripción.

Ejemplo

Compactar todas las tablas de la instancia si el umbral mínimo de registros vacíos alcanza el 30%:

Compactar tabla ( , Fichero (.dat, .idx) y contenedor de datos (.cnd, .cni), 30, BOK )

Regenerar área de datos de la tabla

Comando de instrucción que fuerza la regeneración del área de datos, de su contenedor y también la regeneración de los índices de tabla y contenedor de una tabla.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Identificador de tabla

Identificador de una tabla del proyecto actual o de un proyecto heredado cuyo área de datos se desea regenerar.

Identificador de variable local booleana de retorno de ok (Opcional)

Variable local del proceso, de tipo booleano, en el que se retornará si el área de datos ha sido regenerada (1) o no (0).

Funcionalidad

Hace una regeneración del área de datos de la tabla seleccionada en sus parámetros, de su contenedor y también la regeneración de los índices de tabla y contenedor.

Comentarios

El área de datos es la parte del fichero de datos que contiene la información sobre la tabla, número total de registros, etc.

Antes de ejecutar este comando habrá que asegurarse de que no haya usuarios o procesos haciendo consultas o escribiendo en la tabla cuyos índices se desean regenerar.

Este comando de instrucción de proceso recomendamos ejecutarlo en modo mantenimiento.

Ejemplo

Regeneramos el área de datos de la tabla ABR_M evaluando la variable de retorno OK para mostrar un mensaje en caso de haberse producido un error.

Regenerar área de datos de la tabla ( ABR_M@ejemplo_dat, OK )
If ( ! OK )
    Mensaje ( "Hubo un error en la regeneración de la tabla ABR_M", Información, ,  )

Regenerar índices de la tabla

Comando de instrucción de proceso que fuerza una regeneración de los ficheros de índices de la tabla seleccionada y de su contenedor.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Identificador de tabla

Identificador de una tabla del proyecto actual o de un proyecto heredado cuyo fichero de índices queremos regenerar.

Identificador de variable local booleana de retorno de ok (Opcional)

Variable local del proceso, de tipo booleano, en el que se retornará si el fichero de índices ha sido sido regenerado (1) o no (0).

Funcionalidad

Fuerza una regeneración del fichero de índices de la tabla seleccionada y de su contenedor.

Comentarios

Antes de ejecutar este comando habrá que asegurarse de que no haya usuarios o procesos haciendo consultas o escribiendo en la tabla cuyos índices se desean regenerar.

La regeneración de índices implica la creación de claves, ordenación, indexación y el guardado el disco del fichero resultante. Si la máquina tiene memoria suficiente la regeneración, tanto de la tabla como del contenedor, lo hará toda de una vez. Si no, cuando deja de tener memoria suficiente, la regeneración se hará uno a uno.

Para la regeneración del contenedor se requiere un mínimo de 1GB de ram libre por cada 8GB de contenedor aproximadamente y que en consumo total en el equipo no se supere el 90% de consumo de memoria. En caso de llegar a uno de los dos límites, se realizará la indexación uno a uno. Con memoria suficiente, realiza la regeneración al menos 2 veces más rápido, dependiendo del tamaño del contenedor.

Este comando de instrucción de proceso recomendamos ejecutarlo en modo mantenimiento.

Ejemplo

Regeneramos los índices de la tabla ABR_M.

Regenerar índices de la tabla ( ABR_M@ejemplo_dat, )

Vaciar tabla

Comando de instrucción que vacía el contenido de una tabla (datos, índices y contenedor).

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Identificador de tabla

Identificador de una tabla del proyecto actual o de un proyecto heredado cuyo contenido queremos borrar.

Identificador de variable local booleana de retorno de ok (Opcional)

Variable local del proceso, de tipo booleano, en el que se retornará si la tabla ha sido vaciada (1) o no (0).

Funcionalidad

Este comando de instrucción de proceso borra el contenido de la tabla indicada en sus parámetros.

Comentarios

Borra el fichero de datos (.dat), el contenedor donde se guardan los campos objeto (.cnd), el fichero de índices de datos (.idx) y el fichero de índices del contenedor (.cni).

Antes de borrarlo se generará una copia del fichero de datos en un archivo con extensión dav y del contenedor en un archivo con extensión cnv. Por lo tanto, en el caso de que queramos recuperar la tabla borrada, podemos seguir los pasos siguientes:

  1. Detener el servicio VATP.

  2. Borrar los archivos dat y cnd de la tabla.

  3. Iniciar el servicio vatp.

  4. Forzar la regeneración de índices de la tabla.

Este comando de instrucción de proceso no transacciona y no debe estar incluido en ninguna transacción, o no haber comenzado ésta hasta que se haya usado el comando. En cuanto comienza transacción ya no puede usar.

En el caso de tablas en memoria, limpiará la tabla dejándola vacía. Hay que tener el cuenta el plano en el que hemos de ejecutar el comando. Si queremos borrar una tabla en memoria de un Velneo vClient, el proceso lo ejecutaremos en primer o segundo plano. Si lo que queremos es borrar una tabla en la memoria del servidor, el proceso lo ejecutaremos en tercer plano.

Este comando de instrucción de proceso recomendamos ejecutarlo en modo mantenimiento.

Este comando de instrucción de proceso solamente es funcional en Velneo vServers cloud y en Velneo vServers locales licenciados con licencia estándar o con licencia con suscripción.

Ejemplo

Rem ( Comprobamos si la tabla tiene registros )
Set ( TAM_LST, 0 )
Cargar lista ( MAESTROS@miApp dat, ID, , , ,  )
    Set ( TAM_LST, sysListSize )
Rem ( Si no tiene registros, avisamos, si los tiene, la vaciamos )
Libre
If ( TAM_LST = 0 )
    Mensaje ( "La tabla no tiene fichas", Información, ,  )
Else
    Vaciar tabla ( MAESTROS@miApp dat, BOK )
    If ( !BOK )
        Mensaje ( "No se ha podido vaciar la tabla", Información, ,  )
    Else
        Mensaje ( "La tabla ha sido vaciada", Información, ,  )

Última actualización