SQL Server Performance

Transacciones

Discussion in 'Preguntas sobre SQL Server en Español.' started by fjac_pe, May 19, 2006.

  1. fjac_pe New Member

    Buenas foro, se me ha presentado un gran problema, en la empresa donde estoy se solicito que la informacion de los usuarios se grabe de manera temporal, es una tabla fija que tiene con llave tambien el spid de conexion, la hora de conexion y la pc que lo esta trabajando, porque? porque el cliente pidio que si hay baja de energia, puedan reiniciar todo e ingresen nuevamente para recuperar su informacion sin perderla, por eso genere tablas fijas similares a las reales y ahi graban toda la informacion fisicamente, ahora el problema me sali en el pase a produccion, primero tienen un servidor con 2 nodos con 2 procesadores por nodo, y cada procesador con 3 Gb de memoria ram o sea bantante memoria y tienen como 150 Gb libres, y mi base a la justas pesa 400 Mb, y fisicamente tiene 3 Gb de espacio total, en las pruebas en paralelo, todo bien, pero cuando se paso a produccion se perdian datos, mi culpa, no use transacciones.

    Pero viene lo bueno, tengo un proceso que duraba a lo mucho 1 seg. por usuario, pero cuando se pone en produccion, se perdia informacion como dije y le puse control de errores, y si hay un problema, cancelo la transaccion pero ahora con solo aumentarle las lineas de transaccion en vb, demora 90 segundos por detalle, una eternidad, generando a los demas usuarios que los bote del sistema por tiempo de espera, en una ocasion lei un post que hablaba de un servidor con 2 procesadores y que hubo problemas, algo como que se configura el servidor con 1 solo procesador para el paralelismo.

    Cabe mencionar que las pruebas se hizo con 4 personas en simultaneo pero todo bien, el problema vino cuando probaron en produccion con 100 usuarios ingresando informacion, y que tanto cambia que el tipo de cursor lo establezca en tipo servidor y luego de hacer mi grabacion, volverlo a cliente, no tengo bien claro ese tema.

    Cualquier conocimiento que me puedan brindar sera bien recibido.

    Muchas gracias.

    Felipe Aguilar
  2. Luis Martin Moderator

    Puede ser que tengas un problema de bloqueo. Quizás puedas agregar NOLOCK para evitarlo.
    Con respecto al tema del paralelismo, puedes probar dejar un solo procesador para que opere en paralelo. Muchas veces eso aumenta la performance.




    Luis Martin
    Moderator
    SQL-Server-Performance.com

    Although nature commences with reason and ends in experience it is necessary for us to do the opposite, that is to commence with experience and from this to proceed to investigate the reason.
    Leonardo Da Vinci

    Nunca esperes el reconocimiento de tus hijos, eso ocurrirá luego de tu muerte


    All postings are provided “AS IS” with no warranties for accuracy.



  3. fjac_pe New Member

    Muchas gracias, encontre una solucion al problema, le genere indices a las tablas que manejo, y si estoy manejando el nolock en los procesos, asi como pasar el tipo de cursor al servidor en lugar que al cliente, para que no demore mucho, pero algo no entendi, el proceso sin indices y sin transacciones no demoraba, pero con transacciones, demora, le genere indices y no demora, bueno eso aumento mi proceso de 1 seg. a un parpadeo, pero ahora tengo que revisar el proceso porque se basa en un registrar cabecera, luego el detalle y por ultimo actualizar los saldos de la cabecera pero en algun momento no actualiza la cabecera como deberia ser, generando descuadres al momento de registrar la informacion, primero descartare que sea error de programacion, pero se da muy rara vez, antes grababan mal muchos registros pero con transacciones bajo, y ahora con ellas, supuestamente ya no pasaba pero en una semana se dio un caso que no actualizo saldos.

    Ah y mi proceso que duraba 2 minutos paso a 3 segundos, no pense que las tablas fijas con funcion de temporal necesitaran indices pues eran tablas de un promedio de 800 registros simultaneos pero demoraba, y aconsejare que para el paralelismo pongan un solo procesador.


    Muchas gracias nuevamente, eso del paralelismo lo lei en un post que respondiste hace un tiempo pero no recordaba muy bien.
  4. Luis Martin Moderator

    Todo bien, entonces. Mejor así.

    Saludos,


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    Although nature commences with reason and ends in experience it is necessary for us to do the opposite, that is to commence with experience and from this to proceed to investigate the reason.
    Leonardo Da Vinci

    Nunca esperes el reconocimiento de tus hijos, eso ocurrirá luego de tu muerte


    All postings are provided “AS IS” with no warranties for accuracy.



Share This Page