19.05.2020

Conflicto de bloqueo de 1c ms sql. Cómo diagnosticé los problemas de bloqueo


No pude anotar los cambios para la transferencia a una base de datos distribuida, me comuniqué con el soporte de 1c y ofrecí lo siguiente. Decidí simplemente reiniciar el servidor de aplicaciones y el servidor con SQL. En general, puede marcar la casilla “Bloqueo programado
tareas incluidas"
También ayudó sin reiniciar.

Operaciones programadas a nivel DBMS para MS SQL Server

Instrucciones para realizar operaciones de rutina a nivel de DBMS.

La información es aplicable a la versión cliente-servidor de 1C:Enterprise 8 cuando se usa MS SQL Server DBMS.

información general

Una de las causas más comunes del funcionamiento no óptimo del sistema es la ejecución incorrecta o fuera de tiempo de las operaciones de rutina a nivel de DBMS. Es especialmente importante seguir estos procedimientos de rutina en grandes sistemas de información ah, que funcionan bajo una carga significativa y sirven a una gran cantidad de usuarios al mismo tiempo. La especificidad de tales sistemas es que las acciones habituales realizadas automáticamente por el DBMS (basadas en la configuración) no son suficientes para una operación eficiente.

Si un sistema en ejecución muestra algún síntoma de problemas de rendimiento, debe verificar que el sistema esté configurado correctamente y que realice periódicamente todo el mantenimiento de rutina recomendado a nivel de DBMS.

La ejecución de los procedimientos de rutina debe estar automatizada. Para automatizar estas operaciones, se recomienda utilizar las herramientas integradas de MS SQL Server: Plan de mantenimiento. También hay otras formas de automatizar estos procedimientos. En este artículo, para cada procedimiento programado, se da un ejemplo de su configuración utilizando el Plan de Mantenimiento para MS SQL Server 2005.

Se recomienda monitorear regularmente la puntualidad y corrección de la implementación de estos procedimientos de rutina.

Actualización de estadísticas

MS SQL Server construye un plan de consulta basado en información estadística sobre la distribución de valores en índices y tablas. La información estadística se recopila sobre la base de una parte (muestra) de datos y se actualiza automáticamente cuando estos datos cambian. A veces, esto no es suficiente para que MS SQL Server construya de manera consistente el plan más óptimo para ejecutar todas las consultas.

En este caso, pueden ocurrir problemas de rendimiento de consultas. Al mismo tiempo, se observan signos característicos de trabajo no óptimo (operaciones no óptimas) en los planes de consulta.

Para garantizar el máximo trabajo correcto El optimizador de MS SQL Server recomienda que actualice periódicamente las estadísticas de la base de datos de MS SQL.

Para actualizar las estadísticas de todas las tablas de la base de datos, debe ejecutar la siguiente consulta SQL:

exec sp_msforeachtable N"¿ACTUALIZAR ESTADÍSTICAS? CON FULLSCAN"

La actualización de estadísticas no provoca el bloqueo de tablas y no interferirá con el trabajo de otros usuarios. Las estadísticas se pueden actualizar tantas veces como sea necesario. Debe tenerse en cuenta que la carga en el servidor DBMS durante la actualización de estadísticas aumentará, lo que puede afectar negativamente rendimiento global sistemas

La frecuencia óptima de actualización de estadísticas depende de la magnitud y la naturaleza de la carga en el sistema y se determina experimentalmente. Se recomienda actualizar las estadísticas. al menos una vez al día.

La consulta anterior actualiza las estadísticas de todas las tablas de la base de datos. En un sistema de la vida real, diferentes tablas requieren diferentes tasas de actualización de estadísticas. Al analizar los planes de consulta, puede determinar qué tablas necesitan las actualizaciones de estadísticas más frecuentes y configurar dos (o más) procedimientos de rutina diferentes: para las tablas que se actualizan con frecuencia y para todas las demás tablas. Este enfoque reducirá significativamente el tiempo de actualización de estadísticas y el impacto del proceso de actualización de estadísticas en el funcionamiento del sistema en su conjunto.

Configuración de la actualización automática de estadísticas (MS SQL 2005)

Inicie MS SQL Server Management Studio y conéctese al servidor DBMS. Abra la carpeta Gestión y cree Nuevo plan servicio:

Cree un subplan (Agregar subplan) y asígnele el nombre "Actualización de estadísticas". Agregue la tarea Actualizar estadísticas desde la barra de tareas:

Configure un programa de actualización de estadísticas. Se recomienda actualizar las estadísticas al menos una vez al día. Si es necesario, se puede aumentar la frecuencia de actualización de las estadísticas.

Establezca la configuración de la tarea. Para hacer esto, haga doble clic en la tarea en la esquina inferior derecha de la ventana. En el formulario que aparece, especifique el nombre de la base de datos (o varias bases de datos) para las que se actualizarán las estadísticas. Además, puede especificar para qué tablas actualizar las estadísticas (si no sabe exactamente qué tablas necesita especificar, establezca el valor en Todas).

La actualización de las estadísticas debe realizarse con la opción Análisis completo habilitada.

Guarde el plan creado. Cuando llegue la hora especificada en el cronograma, las estadísticas se actualizarán automáticamente.

Borrar la caché de procedimientos

El optimizador de MS SQL Server almacena en caché los planes de consulta para volver a ejecutarlos. Esto se hace para ahorrar tiempo en compilar una consulta si la misma consulta ya se ejecutó y se conoce su plan.

Es posible que MS SQL Server, basándose en información estadística obsoleta, cree un plan de consulta no óptimo. Este plan se almacenará en la caché de procedimientos y se usará cuando se vuelva a invocar la misma consulta. Si actualizó las estadísticas pero no borró la memoria caché de procedimiento, entonces SQL Server puede elegir el plan de consulta anterior (no óptimo) de la memoria caché en lugar de crear un plan nuevo (mejor).

Para borrar la caché de procedimientos de MS SQL Server, debe ejecutar la siguiente consulta SQL:

Esta consulta debe ejecutarse inmediatamente después de actualizar las estadísticas. En consecuencia, la frecuencia de su ejecución debe coincidir con la frecuencia de actualización de las estadísticas.

Configuración de limpieza de caché de procedimientos (MS SQL 2005)

Dado que la caché de procedimientos debe borrarse cada vez que se actualizan las estadísticas, se recomienda agregar esta operación al subplan "Actualizar estadísticas" ya creado. Para hacer esto, abra el subplan y agregue la tarea Ejecutar instrucción T-SQL a su esquema. Luego, debe conectar la tarea Actualizar estadísticas con una flecha a la nueva tarea.

En el texto de la tarea Ejecutar declaración T-SQL creada, debe especificar la consulta "DBCC FREEPROCCACHE":

Desfragmentación de índice

Cuando se trabaja intensamente con tablas de bases de datos, se produce el efecto de fragmentación de índices, lo que puede provocar una disminución de la eficiencia de las consultas.

sp_msforeachtable N"DBCC INDEXDEFRAG (<имя базы данных>, ""?"")"

La desfragmentación de índices no bloquea las tablas y no interferirá con el trabajo de otros usuarios; sin embargo, crea una carga adicional en SQL Server. La frecuencia óptima para realizar este procedimiento de rutina debe seleccionarse de acuerdo con la carga del sistema y el efecto obtenido de la desfragmentación. Le recomendamos que desfragmente sus índices al menos una vez a la semana.

Es posible desfragmentar una o más tablas, no todas las tablas de la base de datos.

Configuración de la desfragmentación de índices (MS SQL 2005)

En el plan de mantenimiento creado anteriormente, cree un nuevo subplan llamado "Reindexar". Agregue una tarea de índice de reconstrucción:

Establezca el cronograma de ejecución para la tarea de desfragmentación del índice. Se recomienda ejecutar la tarea al menos una vez a la semana, y si los datos en la base de datos son muy volátiles, incluso con más frecuencia, hasta una vez al día.

Reindexación de tablas de base de datos

La reindexación de tablas incluye una reconstrucción completa de los índices de las tablas de la base de datos, lo que conduce a una optimización significativa de su trabajo. Se recomienda realizar una reindexación periódica de las tablas de la base de datos. Para reindexar todas las tablas de la base de datos, debe ejecutar la siguiente consulta SQL:

sp_msforeachtable N"DBCC DBREINDEX(""?"")"

La reindexación de tablas las bloquea mientras dura su trabajo, lo que puede afectar significativamente el trabajo de los usuarios. En este sentido, se recomienda realizar la reindexación durante la carga mínima del sistema.

Después de reindexar, no es necesario desfragmentar los índices.

Configuración de la reindexación de tablas (MS SQL 2005)

En el plan de mantenimiento creado anteriormente, cree un nuevo subplan llamado "Desfragmentación de índice". Agregue una tarea de índice de reconstrucción:

Establezca el cronograma de ejecución para la tarea de reindexación de la tabla. Se recomienda ejecutar la tarea durante la carga mínima en el sistema, al menos una vez a la semana.

Personalice la tarea especificando la base de datos (o varias bases de datos) y seleccionando las tablas requeridas. Si no sabe exactamente qué tablas especificar, establezca el valor en Todo.

¿Qué son los candados en 1C, por qué son necesarios y cómo evitar problemas al trabajar con ellos?

Seguramente, muchos de ustedes, al usar los sistemas de información 1C Enterprise (1C 7.7, 1C 8.1, 1C 8.2, 1C 8.3), se han encontrado con un fenómeno como el bloqueo. Además, como regla, todos llaman a este fenómeno de manera diferente: "bloqueos 1C", "conflicto de bloqueo 1C", "errores de bloqueo 1C", "bloqueos de transacción 1C" y otros nombres. Comprendamos brevemente qué son los bloqueos (no puntos muertos), por qué son necesarios y cómo evitar problemas al trabajar con ellos.


Se bloquea solo (incluso en 1C y en otros sistemas) Herramienta útil, que proporciona la capacidad de trabajar secuencialmente con recursos compartidos. Por ejemplo, el concepto de “recursos compartidos” nos rodea en la vida, por ejemplo, mientras conduces un automóvil, nadie más puede conducirlo. Por lo tanto, un automóvil es un recurso compartido. Y el segundo conductor está esperando a que llegue, por ejemplo, su esposa/esposo. Ambos están compitiendo por un recurso común: un automóvil. ¿Quién conducirá el coche? este momento Usted define a nivel conceptual, pero ¿cómo debemos estar en sistemas automatizados??? Para hacer esto, se les ocurrió una herramienta bloqueando, que organizan el proceso de acceso a un recurso compartido y definen una cola. Como regla general, en la vida, como en los sistemas de información (1C 7.7, 1C 8.1, 1C 8.2, 1C 8.3), hay muchos recursos comunes y, por lo tanto, también hay muchos bloqueos. Ahora, el segundo punto importante: cuánto tiempo esperará su esposa / esposo para el lanzamiento de su automóvil, es lógico suponer que no durará para siempre. Por lo tanto, para bloqueos, se establece un límite de tiempo de espera; de lo contrario, el tiempo de espera. El tiempo de espera es la cantidad máxima de tiempo que un participante rival (su esposa/esposo) puede esperar a que se libere un recurso compartido. Entonces, o sigue esperando el mismo tiempo, o va a pie. En los sistemas de información 1C, la expiración del tiempo de espera finaliza con el mensaje "Conflicto de bloqueo de 1C", "Errores de bloqueo de 1C", "Bloqueos de transacciones de 1C", "Tiempo de espera en bloqueo".

Un detalle importante que también debe recordarse es que los bloqueos (en particular en 1C) son explícitos (establecidos por el usuario) e implícitos (establecidos por la plataforma SQL). En el artículo estamos hablando de bloqueos explícitos, por lo que siempre se utilizan en una transacción, por lo que resulta que "1C Lock" y "1C Transaction Lock" son sinónimos.

Decidimos que cuando se excede el tiempo de espera, se muestra un mensaje de error al usuario, el proceso de espera en sí parece una pantalla adhesiva del sistema de información 1C para él. Los siguientes indicadores influyen en la probabilidad de un mensaje de tiempo de espera (errores 1C para el usuario):

  • Muchos bloqueos 1C en una transacción;
  • Duración de la transacción.

Para minimizar los mensajes asociados con los errores de bloqueo, es necesario reducir el conjunto de bloqueos (optimizar la selectividad) o reducir la duración de las transacciones.
Ahora decidamos cómo se puede influir en estos indicadores en un sistema de información 1C real.

Para reducir mucho el bloqueo:

En 1C: Empresa 7.7:

Sistema de información 1C 7.7. para los candados se utilizan candados de mesa, que paralizan el trabajo de los usuarios. Como regla general, más de 50 personas en una base de datos no pueden trabajar sin errores, mientras que los problemas también pueden aparecer en bases de datos de 20 usuarios.
Solución:

  • Cerraduras flexibles 1C de la empresa "Softpoint". Con su ayuda, no solo optimizará muchos bloqueos (reemplazando los bloqueos de tablas con bloqueos personalizados), sino que también acelerará las selecciones, las búsquedas y los informes.
En 1C:Enterprise 8.x:
Sistema de información 1C 8.1., 1C 8.2., 1C 8.3. utiliza automáticamente bloqueos de tipo redundante (REPEATABLEREAD, SERIALIZABLE). Esto conduce a un deterioro en la experiencia del usuario de 100.
Solución:
  • Managed locks 1C es una herramienta integrada de la plataforma 1C para configuraciones de bloqueo más selectivas. Para usarlo, el programador debe escribir operadores especiales en los lugares correctos del código para bloquear los necesarios ( ¡en su opinión!) entradas en las tablas del sistema de información;
  • Cerraduras flexibles 1C - Tecnología Softpoint para la sustitución de cerraduras estándar por personalizadas.

Para reducir la duración de las transacciones:

Para cualquier sistema de información 1C (1C 7.7., 1C 8.1, 1C 8.2, 1C 8.3), así como para otros sistemas de información, se utilizan enfoques similares:

    Comprobar y corregir el ajuste mantenimiento de rutina bases de datos (mantenimiento de archivos, índices, estadísticas, bases de datos de tablas temporales, configuración de Windows y SQLServer);

    Análisis y optimización de consultas SQL y 1C pesadas (ajuste de índice, reescritura de consultas);

    Comprobación de redundancia de transacciones. En muchos casos, no es razonable incluir operaciones en una transacción sin darse cuenta de cómo esto afectará la duración y, con ello, el rendimiento.

  1. Si desea tratar de forma independiente los problemas de rendimiento técnico de 1C (1C 7.7, 1C 8.1, 1C 8.2, 1C 8.3) y otros sistemas de información , luego para usted una lista única de artículos técnicos en nuestro Almanaque (Bloqueos y puntos muertos, CPU pesada y carga de disco, mantenimiento de bases de datos y ajuste de índices son solo una pequeña parte de los materiales técnicos que encontrará allí).
  2. Si desea hablar sobre problemas de rendimiento con nuestro experto o pedir una solución de monitoreo de rendimiento PerfExpertentonces deje una solicitud y nos pondremos en contacto con usted lo antes posible.

¡Hola a todos!

El otro día en el trabajo, encontré un problema con los bloqueos, a saber, comenzó a aparecer el mensaje "Conflicto de bloqueo al ejecutar una transacción. Se ha excedido el tiempo de espera máximo para otorgar un bloqueo".

Obviamente, no hay ningún problema de interbloqueo aquí, es solo que alguna sesión colocó un bloqueo y "olvidó" eliminarlo. Al mismo tiempo, el problema amenazaba con graves consecuencias: el documento Ventas de bienes y servicios no se llevó a cabo. ¡Alrededor de 100 personas trabajan en la base de datos a la vez, y es imposible realizar una operación típica y frecuente!

Había dos soluciones: reiniciar el servidor o buscar una sesión fallida. La primera solución es simple y rápida, pero, como alguien ya escribió aquí, puede reiniciar el servidor hasta que lo despidan. Decidió ir por el segundo camino.

El primer día - el problema apareció por la tarde, al principio parecía que el problema estaba en el usuario remoto que estaba atascado en el Configurador. Parecía que la ejecución simplemente se detuvo en un punto y, por supuesto, la cerradura no se abrió. Después de un par de horas, logramos liberar el configurador, pero el problema no desapareció. Era extremadamente indeseable matar al configurador por la fuerza, tal vez trabajaron en él. Después de eso, Google se hizo cargo. Encontré un artículo en este sitio, que dice cómo encontrar bloqueos en el DBMS de MS SQL, verificado, no había bloqueos en el nivel de DBMS. Extraño. Además, hubo intentos de ajustarlos. revista. Configurar, ¿qué sigue? En 15 minutos un par de gigas de logs! ¿Cómo leerlos, qué buscar? Desconocido.

Encontré un artículo sobre cómo ver lo que está bloqueado a través de SQL Trace. Incluso si lo encuentro, ¿entonces qué? ¡Necesito una sesión!

Más cerca de las 16:00, cuando me di cuenta de que no podía avanzar más, reinicié. Con la esperanza de que esto no vuelva a suceder (y este fue el primer caso en seis meses de trabajo), respiré aliviado, todo funcionó. Pero en vano ... El segundo día - la misma situación. Busqué durante una hora y media, nuevamente intentos incomprensibles de buscar en Google, etc. No hay resultados. Reiniciar. Al final del día volvió a pasar. Bueno, creo que es genial, volveré tranquilamente a casa y me sentaré, profundizaré. Llego a casa, todo está bien. Desafortunadamente.

El tercer día, vi un seminario web, hablé sobre un tema interesante y metodo efectivo buscar un problema. Recordado, pero el problema no se presentó más. Ha pasado una semana y aquí está: ¡otra vez bloqueando! Me froto las manos y empiezo a actuar.

El primero es configurar el registro. Sí, no puedo prescindir de él, pero ahora puedo leerlo. Establecemos dos eventos: el primero es TLOCK, el segundo es TTIMEOUT. El primero muestra todos los eventos de bloqueo, el segundo muestra los bloqueos que no se pudieron establecer en el tiempo asignado. De hecho, lo más probable es que solo TTIMEOUT sea suficiente.



















Copiamos el archivo de registro técnico en el lugar asignado, volamos al programa, llamamos al bloqueo, recibimos un mensaje y eliminamos o renombramos el archivo de registro técnico. ¡No necesitamos toneladas de información sobre otros bloqueos!

Vaya a la carpeta rphost_PID, busque archivos de texto y busque la palabra TTIMEOUT. Vemos la línea:

53:16.789126-0,TTIMEOUT,5,process=rphost,p:processName=*****,t:clientID=16536,t:applicationName=1CV8,t:computerName=ASUSM,t:connectID=17272,SessionID= 2242,Usr=*******,Conexiones en espera=8239

Por cierto, puede haber varias carpetas rphost_PID, todo depende de cuántos procesos de trabajo se estén ejecutando en el servidor.

Y luego todo es simple: mire al final de la línea - WaitConnections = 8239, este es nuestro número de CONEXIÓN. Vamos a la consola del servidor, vamos a Conexiones, buscamos este número y miramos el número de sesión. En mi caso, hubo dos sesiones por usuario, una fallida y otra. Se bloqueó la sesión indicada por el registro técnico. ¡Y sobre un milagro! ¡Todo funcionó, no hay límite para la alegría! Pero, como resultó más tarde, la sesión no se colgó :), trabajaron en ella. Por tanto, de cara al futuro, es recomendable contactar con el usuario y avisar.

En mi opinión, una solución bastante típica para un problema bastante típico. No se sabe por qué no lo encontré, tal vez debido al hecho de que tuve que buscarlo con alarma, y ​​cuando los usuarios no presionaron, entonces no fue posible realizar pruebas, no hubo error.

Cuando cientos de usuarios trabajan con programas y datos al mismo tiempo, surgen problemas inherentes solo a las soluciones a gran escala. Estamos hablando de problemas causados ​​por bloqueos de datos.

A veces, los usuarios se enteran de bloqueos a partir de mensajes que indican la incapacidad de escribir datos o realizar alguna otra operación. A veces debido a una caída muy significativa en el rendimiento del programa (por ejemplo, cuando el tiempo requerido para realizar una operación crece decenas o cientos de veces).

Los problemas causados ​​por el bloqueo no tienen una solución general. Por lo tanto, intentaremos analizar las causas de tales problemas y sistematizar las opciones para su solución.

RAZONES PARA EL BLOQUEO DE TRANSACCIONES

Primero recordemos qué son los bloqueos y, al mismo tiempo, descubriremos si son necesarios. Veamos un par de ejemplos clásicos de bloqueo que encontramos en la vida.

Ejemplo 1: Comprar un billete de avión o de tren. Supongamos que expresamos nuestros deseos al cajero. El cajero nos indica la disponibilidad de plazas, entre las que podemos elegir la que más nos guste (si son varias, claro). Hasta que elijamos y confirmemos nuestro acuerdo con la opción propuesta, estos asientos no se pueden vender a nadie más, es decir. bloqueado temporalmente. Si no estuvieran bloqueados, en el momento de la confirmación podría darse una situación en la que las entradas que hemos elegido ya se hayan vendido. Y en este caso, el ciclo de selección puede ser un número impredecible de repeticiones. Mientras vamos eligiendo lugares, pero ya se han vendido!.. Mientras vamos eligiendo otros, y ya no están...

Ejemplo 2: comprar algo en una tienda o mercado. Subimos al mostrador, elegimos la manzana más bonita de las cien disponibles. Eligieron y metieron la mano en su bolsillo por dinero. ¿Cómo se verá si, mientras contamos el dinero, es la manzana que hemos elegido la que se venderá al comprador que llegó más tarde que nosotros?

Así, el bloqueo en sí mismo es un fenómeno necesario y útil. Es gracias al bloqueo que garantizamos la ejecución de acciones en una etapa. Y la mayoría de las veces, no la implementación más exitosa conduce a resultados negativos. software cuando, por ejemplo:

  • se bloquea un número excesivo de objetos (boletos, manzanas);
  • el tiempo de bloqueo se extiende injustificadamente.

ENCLAVAMIENTOS EXCESIVOS EN CONFIGURACIONES 1C TÍPICAS

En proyectos mayores Por regla general, utilizamos 1C:Enterprise. Es por eso Consejo practico Intentaremos describir las soluciones a los problemas de bloqueo utilizando el ejemplo del paquete 1C:Enterprise + MS-SQL.

La octava generación de 1C:Enterprise proporciona un paralelismo de uso muy, muy bueno. Simultáneamente con una configuración (es decir, en una base), con servidores y canales de comunicación normales, puede funcionar gran cantidad usuarios Por ejemplo, cientos de tenderos procesan la emisión o recepción de mercancías, los economistas calculan simultáneamente el costo de los salarios según varios departamentos, calculadoras realizan el cálculo y cálculo de salarios, etc.

Pero hay una razón por la que existe una opinión contraria: el mito de que, con un uso simultáneo intensivo, es incómodo o imposible trabajar con soluciones basadas en 1C: Enterprise. Después de todo, tan pronto como cientos de usuarios comienzan a utilizar soluciones estándar para 1C:Enterprise a escala industrial, aparece cada vez más una ventana en la pantalla con una inscripción orgullosa: "Error al llamar al método de contexto (Registro): Bloquear conflicto al ejecutar una transacción: ..." y más adelante, según el tipo de servidor SQL utilizado, algo así como "Microsoft OLE DB Provider for SQL Server: se excedió el período de tiempo de espera de la solicitud de bloqueo. ...".

Casi todas las soluciones estándar en la implementación "lista para usar" propuesta están configuradas para la gestión automática de bloqueos. "Automático" aquí puede tomarse como "paranoico". Por si acaso, al realizar cualquier documento, bloqueamos todo lo que pueda estar relacionado de alguna manera con él. Entonces resulta que cuando un usuario gasta algo (ya veces solo escribe), el resto solo puede esperar.

Expresaré mi opinión de por qué 1C decidió no personalizar sus soluciones estándar para un alto paralelismo de uso. Los costos de mano de obra para dicho refinamiento no son altos: unos pocos "meses-persona", lo que no es significativo en términos de escala 1C. Creo que la razón es diferente.

En primer lugar, tal refinamiento complica significativamente los procesadores para publicar todos los documentos. Esto significa que para aquellos consumidores que usan 1C para tareas pequeñas, sin ninguna ganancia, solo habrá un inconveniente: la complejidad de finalizar una configuración típica se volverá más complicada. Al mismo tiempo, las estadísticas sugieren qué categoría de clientes es el principal alimentador de 1C ...

La segunda razón está enterrada en la típica ajustes básicos Servidores SQL, como MS-SQL, que todavía se usa con más frecuencia que otros. Dio la casualidad de que las prioridades en la configuración se dan para ahorrar RAM del servidor y no para reducir el bloqueo. Esto lleva al hecho de que, si es necesario bloquear varias filas, el servidor SQL toma una decisión "económica" para la memoria y el procesador: ¡bloquear toda la tabla a la vez!..

Aquí están los defectos soluciones estándar o los detalles de la configuración del servidor de base de datos que se utiliza a menudo se combinan con problemas causados ​​por bloqueos. Como resultado, las fallas técnicas conducen a cambios muy significativos. problemas organizativos. Después de todo, si a un empleado se le da una razón para distraerse del trabajo o se justifica por qué no se pudo hacer el trabajo, una minoría trabajará de manera efectiva. Bueno, un mensaje sobre el bloqueo de transacciones o un programa de "ralentización" es una justificación ideal por la que no se puede hacer nada.

RECOMENDACIONES PARA LA ELIMINACIÓN DEL BLOQUEO EXCESIVO PARA 1C:ENTERPRISE

¿Qué hacer si la solución de problemas de bloqueo excesivo es tan importante?

En la etapa final de implementación de todos los complejos grandes, es necesario realizar un refinamiento fino para eliminar bloqueos de transacciones innecesarios. Es fundamental para resolver los problemas que pueden surgir de condiciones de bloqueo o metodología de implementación insuficientemente desarrolladas.

Porque esta operacion extremadamente importante, debe llevarse a cabo constantemente. Por lo tanto, para simplificar la implementación de dicho refinamiento, hemos desarrollado una serie de recomendaciones básicas que tratamos de cumplir. Recomendaciones recibidas y probadas sobre la experiencia de un número significativo de implementaciones a gran escala.

  1. Si su DBMS o sistema de desarrollo (por ejemplo, 1C:Enterprise) utiliza el modo de bloqueo automático de datos de forma predeterminada, deséchelo Control automático Cerraduras. Configure las reglas de bloqueo usted mismo, describa los criterios de bloqueo para tablas completas o filas individuales.
  2. Al desarrollar un programa, siempre que sea posible, consulte las tablas en el mismo orden.
  3. Trate de no escribir en la misma tabla varias veces dentro de la misma transacción. Si esto es difícil, al menos minimice el intervalo de tiempo entre la primera y la última operación de escritura.
  4. Analizar la posibilidad de deshabilitar el escalamiento de bloqueos a nivel de servidor SQL.
  5. Informar claramente a los usuarios sobre los motivos de la imposibilidad de realizar alguna acción si se debe a un bloqueo. Dar recomendaciones accesibles y comprensibles sobre qué hacer a continuación.

Si observa detenidamente las recomendaciones, queda claro que tal desarrollo es apropiado no solo para 1C:Enterprise, sino para cualquier sistema. No importa en qué idioma estén escritos y con qué servidor de base de datos trabajen. La mayoría de las recomendaciones son de carácter universal y, por lo tanto, son igualmente válidas cuando se utiliza 1C: Enterprise y para programas "autoescritos" u otros sistemas ERP "en caja".

PD ¿Sabía que ofrecemos asistencia profesional para actualizar el software 1C? mejor precio?

Etiquetas de búsqueda:
  • Bloqueos de transacciones
  • Eliminación de bloqueos
  • Bloqueo 1C
  • bloqueando
  • Conflicto de bloqueo
  • Conflicto de bloqueo al ejecutar una transacción

En sistemas multiusuario papel importante obras de teatro organización adecuada estructuras y colocación de cerraduras. De lo contrario, los usuarios a menudo encontrarán errores causados ​​por la competencia por ciertos recursos del sistema. Pero hay un problema de conflicto de bloqueo con el que muchos usuarios están familiarizados. ¿Por qué ocurre un conflicto de bloqueo 1C y cómo solucionarlo?

Conflicto de bloqueo en 1C 8.3 y su significado

Para la mayoría de los usuarios, un mensaje de conflicto de bloqueo 1C significa solo un error que les impide hacer su trabajo. Quieren deshacerse de este problema lo antes posible y asediar al departamento de TI con quejas de que "1C no funciona".

Pero para administradores del sistema y desarrolladores, dicho mensaje indica un posible problema en la estructura de configuración. Antes de intentar complacer a los usuarios y eliminar bloqueos, debe analizar la situación y comprender la causa del mensaje de error.

Causas de errores de bloqueo en 1C

Las pruebas de carga demostrativas demuestran que el servidor 1C puede soportar la operación paralela de más de cinco mil usuarios. Pero las condiciones ideales para tales experimentos son inalcanzables en las condiciones diarias de las grandes y medianas empresas. Para lograr un rendimiento similar y sin errores, la configuración debe estar idealmente diseñada y adaptada a los procesos comerciales específicos de la empresa.

Si no elige las opciones ideales, se producirán conflictos de bloqueo 1C por los siguientes motivos:

Trabajo simultáneo de usuarios con una gran cantidad de datos. Esta causa raíz está dictada por los mecanismos internos de 1C. Implican la prohibición de modificar los datos involucrados en una transacción iniciada por cuenta de otro usuario;

Errores y deficiencias en la configuración. La estructura de las soluciones estándar de la empresa "1C" tiene en cuenta las recomendaciones para maximizar la productividad. Pero los desarrolladores de terceros no siempre se adhieren a los altos estándares y, a menudo, puede encontrar las siguientes deficiencias en su código:

  • Solicitudes subóptimas;
  • Solicitud de saldos al inicio de acciones;
  • Malinterpretar el propósito de los objetos de configuración y su uso incorrecto;
  • Redundancia inherente al sistema o bloqueos desarrollados adicionalmente.

Cómo solucionar un conflicto de bloqueo en 1C 8.3

El mensaje del sistema "Conflicto de bloqueo durante la ejecución de la transacción 1C 8.3" no caracteriza la configuración como diseñada incorrectamente. Pero si se ignoran tales señales, existe la posibilidad de que en el momento más crucial, por ejemplo, al enviar informes trimestrales o anuales, tenga grandes problemas. En el mejor de los casos, un sistema lento y usuarios insatisfechos. En el peor de los casos, datos de salida incorrectos, que pueden dar lugar a sanciones por parte de las autoridades reguladoras.

La solución al problema del conflicto de candados en 1C 8.3 puede ser la transferencia de la configuración a un modo de gestión de candados gestionado (manual). Implementado en la versión 8.1, el mecanismo en manos de especialistas competentes resuelve el problema de los conflictos de bloqueo durante las transacciones en 1C.


Pero debe tenerse en cuenta que esta acción reducirá el nivel de protección de los datos frente a cambios en el proceso de lectura por parte de otros usuarios. Por lo tanto, si no está listo para controlar de forma independiente todas las cerraduras del sistema, no se apresure a cambiar los ajustes de configuración.

Resolución rápida de conflicto de bloqueo 1C

En el trabajo de un administrador o desarrollador, puede haber una situación en la que no haya tiempo para verificar el error y encontrar las causas raíz del problema. Por ejemplo, debe enviar un informe o enviar datos en un momento determinado, y los errores de bloqueo 1C lo impiden.

Hay dos formas de resolver rápidamente el problema:

  • Busque y finalice la sesión que ha bloqueado los datos necesarios. EN pequeñas empresas, donde el número de usuarios de 1C no supera un par de docenas de personas, esta es la mejor solución;
  • Si controla un sistema que tiene cientos de empleados, encontrar la sesión adecuada sin un software especializado puede llevar mucho tiempo. En este caso, será mucho más eficiente reiniciar el servidor.

Estas soluciones son radicales y apuntan solo a una solución rápida del problema y la liberación de datos para informes urgentes. Solo se puede erradicar al comprender la razón por la cual surgió un conflicto de bloqueo durante la ejecución de una transacción 1C. Luego de tales acciones, es necesario encontrar vulnerabilidades en el sistema, optimizar la configuración o el trabajo de los empleados. No se recomienda utilizar tales medidas de forma permanente con conflictos regulares de bloqueos en las transacciones.


2023
newmagazineroom.ru - Estados contables. UNVD. Salario y personal. Operaciones de divisas. Pago de impuestos. IVA. primas de seguro