PDA

Ver la Versión Completa : Problemas con el IBServer


jmbarrio
14-05-2003, 15:54:43
Hola a todos-as, tengo un problema con mi base de datos, actualmente ocupa unos 150Mb, el problema es que durante un tiempo cualquier consulta que hagas la hace de manera rápida, pero al cabo de un tiempo le cuesta una eternidad, cuando esto ocurre el IBserver esta consumiendo practicamente el 100% de la CPU, normalmente reinicio el servidor y me resuelve temporalmente el problema.
Al servidor donde se encuentra la base de datos, acceden varios ordenadores, realizando consultas con una frecuencia de 5sg.

Como puedo solucionar el problema sin tener que reiniciar el servidor?

Muchas gracias.

__cadetill
14-05-2003, 16:00:09
Hola

cuando dices "un tiempo", a que te refieres, a horas, dias,....

Si es mayor a un dia, te aconsejaria que planificaras un proceso por la noche (o cuando estubieras seguro que nadie trabaja con la BD) que desactivara los indices y los volviera a activar (se recrearian) y hacer un backup/restore de la BD

Ya nos contaras

jmbarrio
14-05-2003, 17:42:52
Posteado originalmente por cadetill
Hola

cuando dices "un tiempo", a que te refieres, a horas, dias,....

Si es mayor a un dia, te aconsejaria que planificaras un proceso por la noche (o cuando estubieras seguro que nadie trabaja con la BD) que desactivara los indices y los volviera a activar (se recrearian) y hacer un backup/restore de la BD

Ya nos contaras


Normalmente aguanta mes o mes y medio, como se desactivan y activan los indices.

Lo del backup y restore ya lo he hecho otras veces, es normal que para un backup de 150mb le cueste entre 5 y 10min?
Una vez que se hace el restore, hay que hacer un sweep a la base de datos. Muchas gracias

__cadetill
14-05-2003, 18:21:39
El Backup/Restore la verdad es que te va algo lento, pero claro, tambien depende del ordenador que tengas. A mi me tarda menos de 5 min en una BD de 100-120 MB

El otro tema, el de los indices.

Para activar-desactivar los indices de una BD, puedes hacer una contulta SQL sobre la tabla de sistema RDB$INDICES, pero claro, no tienes que modificar todos los registros de la misma, solo los que a ti te interesan que serian (mas o menos) los que te devolveria la siguiente sentencia SQL


select *
from RDB$INDICES
where RDB$SYSTEM_FLAG IS NULL and
RDB$FOREING_KEY IS NULL'


(no se si me dejo alguna condicion, si es asi, rectificarme porfa ;) )

y para activar/desactivar solo haria falta hacer algo asi para cada uno de los registros devueltos por la consulta anterior


// Activar
alter index NombreIndice ACTIVE

// Desactivar
alter index NombreIndice INACTIVE


Espero que te sirva

jmbarrio
14-05-2003, 18:35:59
Posteado originalmente por cadetill
El Backup/Restore la verdad es que te va algo lento, pero claro, tambien depende del ordenador que tengas. A mi me tarda menos de 5 min en una BD de 100-120 MB

El otro tema, el de los indices.

Para activar-desactivar los indices de una BD, puedes hacer una contulta SQL sobre la tabla de sistema RDB$INDICES, pero claro, no tienes que modificar todos los registros de la misma, solo los que a ti te interesan que serian (mas o menos) los que te devolveria la siguiente sentencia SQL


select *
from RDB$INDICES
where RDB$SYSTEM_FLAG IS NULL and
RDB$FOREING_KEY IS NULL'



(no se si me dejo alguna condicion, si es asi, rectificarme porfa ;) )

y para activar/desactivar solo haria falta hacer algo asi para cada uno de los registros devueltos por la consulta anterior


// Activar
alter index NombreIndice ACTIVE

// Desactivar
alter index NombreIndice INACTIVE


Espero que te sirva

La primera sentencia sql me da error de columna desconocida
RDB$FOREING_KEY

kinobi
14-05-2003, 18:38:29
Hola,

Posteado originalmente por jmbarrio
Lo del backup y restore ya lo he hecho otras veces, es normal que para un backup de 150mb le cueste entre 5 y 10min?
Como comenta Cadetill, puede ser normal. Depende también, entre otras cosas, del tipo de información que contenga y de la complejidad del modelo de datos (índices, claves ajenas, restricciones de integridad y de valores, ...), cuanto más compleja más tiempo.

Posteado originalmente por jmbarrio
Una vez que se hace el restore, hay que hacer un sweep a la base de datos. Muchas gracias
No, no es necesario hacer el sweeping. El backup/restore inicia los contadores de transacciones y el versionado de registros. Casi seguro que el tiempo que comentas, mes o mes y medio (depende de la actividad que tenga tu base de datos en cuanto a actualizaciones), sea suficiente para que el multiversionado de registro degrade el rendimiento de acceso a la base de datos.

Por cierto, con el backup/restore ya se reconstruyen los índices. En el backup sólo se guarda la descripción de los índices, pero no sus valores; es el proceso de restore, en función de los datos que guarde el backup, el que debe volver a reconstruirlos.

Saludos.

__cadetill
14-05-2003, 18:44:30
Posteado originalmente por jmbarrio
La primera sentencia sql me da error de columna desconocida
RDB$FOREING_KEY

cierto, me equivoque al teclear, no es RDB$FOREING_KEY sino RDB$FOREIGN_KEY, pero como comenta el amigo kinobi, si haces backup/restore amenudo, no necesitaras hacer la activacion/desactivacion de indices