MTBASE / SYBASE DE COLOMBIA
 
Búsqueda avanzada...
Versión para imprimir Versión para imprimir Enviar vínculo por e-mail Enviar por e-mail Ver atributos del documento Atributos del documento
 

Limitaciones de Bloqueo en Adaptive Server Anywhere

Problema

Las bases de datos que contienen un número muy grande de filas, ocasionalmente experimentan errores al manipular un número grande de filas (millones) en una transacción. Estos errores no al trabajar con conjuntos más pequeños de filas.

Por ejemplo, el siguiente error puede ser arrojado al realizar un INSERT INTO tabla SELECT, incluso aunque no haya más usuarios conectados a la base de datos:

-210: "User 'another user' has row in <table> locked"

Explicación

La estructura de datos usada para manejar los candados sobre una tabla específica tiene un límite sobre el número de entradas que puede tener. Este límite es un rango basado en el tamaño de página. El número aproximado de entradas para cada tamaño de página es:

Tamaño de Página Límite
1024 5 millones
2048 11 millones
4096 22 millones
8192 44 millones

Caminos Alternos

El camino alterno más obvio es partir la transacción y consecuencia bloquear un número más pequeño de filas. Esto tiene el beneficio agregado de aumentar la concurrencia, reducir el tamaño de log y reducir el tiempo de recuperación, si es que el sistema dejara de responder durante la transacción.

En algunos casos no es fácil o no se desea partir la transacción. En estos casos, usted debería considerar bloquear explícitamente la tabla. Si la opción SUBSUME_ROW_LOCKS está en ON (valor predeterminado), siempre que una tabla T es bloqueada de manera exclusiva con LOCK TABLE T IN EXCLUSIVE MODE, la base de datos no necesita continuar adquiriendo candados individuales de fila para la tabla T. Esto puede resultar una mejora significativa de rendimiento si se llevan a cabo actualizaciones extensivas a la tabla T en una sola transacción, especialmente si T es grande, comparada al tamaño del caché.

Un problema de definir SUBSUME_ROW_LOCKS en ON es que los cursores tipo "keyset" sobre una tabla bloqueada de esta manera no trabajan como se espera. Por ejemplo, pueden arrojar advertencias de "fila modificada" para cada fila del cursos para cualquier fila de la base de datos que haya sido modificada. También, el servidor de bases de datos puede convertir un cursor actualizable con un ORDER BY en un cursor "keyset".

Atributos del Documento
Resumen: Este documento explica la causa de errores que pueden ocurrir al manipular un número grande de filas en una transacción, así como caminos alternos para evitar la situación.
Código: 10191 Última Modificación: Abr 29, 2005
Temas: Configuración, Administración Tipo de Documento: Documento Técnico
Productos: Adaptive Server Anywhere Versión: Todas las Versiones
Plataformas: Todas las Plataformas Sistema Operativo: Todos los Sistemas Operativos
 
 Inicio   Sobre MTBASE   Sobre Sybase   Empleos en MTBASE   Mapa del Sitio   Aspectos Legales y Políticas de Privacidad