Compartir a través de


Optimizar aplicaciones en entornos multiusuario

Si va a escribir aplicaciones para un entorno multiusuario, el rendimiento es un factor especialmente importante, porque las operaciones ineficaces se multiplican. Además, si varios usuarios tienen acceso a datos, la aplicación debe gestionar problemas de simultaneidad y acceso a la red.

Para administrar estos problemas, puede:

  • Ajustar el intervalo de reintentos de bloqueo.
  • Usar el procesamiento de transacciones de forma eficaz.

Asimismo, las sugerencias para trabajar con datos almacenados en servidores remotos pueden resultarle especialmente útiles. Para obtener detalles, vea Optimizar el acceso a datos remotos.

Ajustar el intervalo de reintentos de bloqueo

Si la aplicación intenta bloquear un registro o una tabla sin éxito, puede hacer que Visual FoxPro reintente el bloqueo automáticamente después de un breve intervalo. Sin embargo, cada intento de bloqueo da lugar a un tráfico de red más intenso. Si ya fuera intenso, el envío de repetidas solicitudes de bloqueo agregará una sobrecarga de trabajo a la red y provocará una ralentización global para todos los usuarios.

Para controlar esta situación, puede ajustar el intervalo entre los intentos de bloqueo. Si usa un intervalo más grande (lo que provocaría menos reintentos por segundo) se reducirá el tráfico de la red y se aumentará el rendimiento.

Para ajustar el intervalo de reintentos de bloqueo

  • Llame a la función SYS(3051); para ello, indique el número de milisegundos que debe esperar entre cada intento de bloqueo.

Usar el procesamiento de transacciones de forma eficaz

Cuando utiliza el procesamiento de transacciones, debe diseñar las transacciones de forma que se reduzca al mínimo el efecto que puedan tener en otros usuarios. Mientras esté abierta una transacción, todos los bloqueos establecidos durante la transacción permanecerán bloqueados hasta que se confirmen o se deshagan. Aun cuando ejecute un comando UNLOCK explícito, los bloqueos se mantendrán hasta que ejecute el comando END TRANSACTION o ROLLBACK.

Además si anexa registros a una tabla, es imprescindible que Visual FoxPro bloquee el encabezado de la tabla. El encabezado permanece bloqueado durante el proceso de la transacción, lo que impide que los demás usuarios también puedan anexar registros.

Para reducir al mínimo el impacto de las transacciones, diséñelas de modo que comiencen y terminen lo más cerca posible de la actualización real de los datos; la transacción ideal sólo contiene instrucciones de actualización de datos.

Si va a agregar el proceso de transacciones a actualizaciones de datos realizadas en un formulario, no abra una transacción, ejecute el formulario y después confirme la transacción cuando el formulario esté cerrado. En su lugar, incluya las instrucciones del procesamiento de transacciones en el código de eventos del botón Guardar, por ejemplo:

* Save method from the cmdSave command button
BEGIN TRANSACTION
UPDATE PRODUCTS SET reorder_amt = 0 WHERE discontinued = .T.
END TRANSACTION

Vea también

Optimizar controles ActiveX | Optimizar el acceso a datos remotos | Optimizar las aplicaciones | Optimizar el sistema | Optimizar aplicaciones internacionales