Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Sobre Transacciones en SQL (https://www.clubdelphi.com/foros/showthread.php?t=67739)

look 03-05-2010 23:37:55

Sobre Transacciones en SQL
 
Hola compañeros veran tengo el siguiente problema con mi sistema de facturacion. el probla radica en la lentitud del sistema a medida que este lleva un tiempo en uso.
normalmente para guardar una factura utilizo el siguiente codigo
Código Delphi [-]
if not (Database1.InTransaction) then Database1.StartTransaction;
          try
             /// proceso de calculo 
            database1.Commit;
          except
            on E: Exception do
            begin
                  DATABASE1.ROLLBACK;
                  Application.MessageBox( PCHAR('Ocurrio un error.'+#13+'Intente mas tarde.'+#13+E.MESSAGE), 'Error',MB_ICONERROR );
                  exit;
            end;
          END;
estube leyendo la cara oculta de delphi y la biblia de delphi de marco c.
aparente mente he llegado a una conclusion pero no estoy seguro, la cosa es que segun estube leyendo es que las transacciones deben de ser lo mas cortas posibles, ahora ¿realmente esto mejora el rendimiento?, porque en realidad creo que si tengo algo larga la transaccion, mi sistema trabaja con muchos pc's clientes y amedida que trabajan , el rendimiento va bajando.
¿ de que manera trabajan ustedes con sus sistemas? me vendria bien sus sabios consejos. tambien leei por alli que se pueden utilizar procedimientos almacenados en la base para mejorar el rendimiento pero... no tengo idea de como hacerlo... espero sus comentarios...
saludos.





Neftali [Germán.Estévez] 04-05-2010 11:16:32

Bueno, creo que las dos cosas/palabras que definen las transacciones. Atómicas, puesto que esa es su definición y pequeñas por lógica.

Una transaccion es una serie de operaciones que el sistema asegura que se harán de forma atómica, es decir, sin la intervención de ningun otro proceso desde el inicio al final y además el sistema asegura que todas esas operaciones se "harán todas" o no se "hará ninguna". Para conseguir eso el sistema puede bloquear a otros procesos si es necesario y además debe mantener una información adicional (sobrecarga) por si en algun momento ha de "deshacer" todo lo que lleva hecho en una transacción.

Eso significa que, cuanto mayor es la transacción (más larga), es más probable que un mayor número de procesos relacionados sufran bloqueos y que la información asociada a la transacción sea mayor y afecte al rendimiento.

Por lo tanto, una transacción debe ser siempre lo más pequeña posible.

look 08-05-2010 00:40:06

Cita:

Empezado por Neftali (Mensaje 362755)
Bueno, creo que las dos cosas/palabras que definen las transacciones. Atómicas, puesto que esa es su definición y pequeñas por lógica.

Una transaccion es una serie de operaciones que el sistema asegura que se harán de forma atómica, es decir, sin la intervención de ningun otro proceso desde el inicio al final y además el sistema asegura que todas esas operaciones se "harán todas" o no se "hará ninguna". Para conseguir eso el sistema puede bloquear a otros procesos si es necesario y además debe mantener una información adicional (sobrecarga) por si en algun momento ha de "deshacer" todo lo que lleva hecho en una transacción.

Eso significa que, cuanto mayor es la transacción (más larga), es más probable que un mayor número de procesos relacionados sufran bloqueos y que la información asociada a la transacción sea mayor y afecte al rendimiento.

Por lo tanto, una transacción debe ser siempre lo más pequeña posible.

hola. gracias compañero, efectivamente tenia mucho que ver lo de las transacciones largas , gracias por tu ayuda.... saludos


La franja horaria es GMT +2. Ahora son las 05:36:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi