Abierto
Cerca

Error al utilizar el administrador de bloqueo. Mecanismo de control de bloqueo de datos de transacciones. Trabajar con bloqueos administrados utilizando el lenguaje integrado

Las principales razones para cambiar a cerraduras administradas:

  • La razón principal es la recomendación de 1C:Expert basada en testimonios o 1C:TsUP
  • Problemas con usuarios concurrentes ()
  • Usando Oracle, PostgreSQL y .

Costo del trabajo:

La esencia de las cerraduras administradas

Cuando se trabaja en modo de control de bloqueo automático, 1C:Enterprise establece un alto grado de aislamiento de datos en una transacción a nivel DBMS. Esto le permite eliminar por completo la posibilidad de obtener datos incompletos o incorrectos sin ningún esfuerzo especial por parte de los desarrolladores de aplicaciones.

Este es un enfoque conveniente y correcto para un pequeño número de usuarios activos. El precio de la facilidad de desarrollo es una cierta cantidad de bloqueo redundante a nivel de DBMS. Estos bloqueos están asociados tanto con las peculiaridades de la implementación de los mecanismos de bloqueo en el propio DBMS como con el hecho de que el DBMS no puede (y no tiene) en cuenta el significado físico y la estructura de los objetos de metadatos de 1C:Enterprise.

Cuando se trabaja con una alta contención de recursos (una gran cantidad de usuarios), en algún momento el impacto de los bloqueos redundantes se vuelve notable en términos de rendimiento en modo paralelo.

Después de transferir la configuración al modo administrado, la funcionalidad adicional del "administrador de bloqueo" se activa en la plataforma y el control de la integridad de los datos ahora no se lleva a cabo en el lado DBMS, sino en el lado del servidor 1C. Esto aumenta la carga en el hardware del servidor 1C (se necesitan procesadores más rápidos y más memoria) y, de hecho, introduce incluso una ligera desaceleración (varios por ciento), pero mejora significativamente la situación con los bloqueos (menos bloqueos debido a bloqueos en un objeto, y no en una combinación de tablas, menos área de bloqueo y, en algunos casos, la vida útil de los bloqueos de lectura es más corta, es decir, no hasta el final de la transacción). Esto mejora la simultaneidad general.


Las nuevas configuraciones de 1C se implementaron inmediatamente de forma controlada.

  • Pregunta: ¿Es posible hacer una auditoría primero y luego transferirla a FM?

Respuesta: Sí, la auditoría servirá como justificación adicional de la viabilidad de la transferencia a esclusas administradas y también para evaluar la contribución de las esclusas automáticas a la desaceleración general y si se necesitan esfuerzos adicionales además de la transferencia.

  • Pregunta: Para transferir a UX, ¿qué tipo de acceso se debe proporcionar: RDP, TeamViewer? ¿O puedo enviarte el archivo de configuración?

Respuesta: Intentamos no limitarnos a una tecnología de acceso remoto específica, servirá cualquier tecnología de acceso remoto. Si no le importa, entonces RDP es más práctico.
Podemos realizar una optimización basada en el archivo de configuración enviado, pero entonces no podremos depurar algunos datos reales y tendrás que realizar pruebas con más cuidado. Si realizamos optimización en una copia de la base de datos, podremos probarla más a fondo antes de entregarle el resultado del trabajo.

  • Pregunta: Tenemos 10 programadores de tiempo completo que cambian algo en la conferencia todos los días. Se utiliza un almacén de configuración compartido." ¿Cómo se organizará la interacción durante la transferencia a UX? ¿O deberíamos enviar a todos los programadores de vacaciones?

Respuesta: Como regla general, nuestros cambios se realizan en un par de días. El resto del tiempo se dedica a probar los cambios realizados, incluso desde el punto de vista de la lógica requerida determinada por consideraciones comerciales y no técnicas. Nosotros Podemos hacer cambios en un archivo de configuración separado. cf y luego su programador lo enviará al repositorio. Nadie tendrá que irse de vacaciones. En otras opciones de interacción, solo necesitas acordar qué objetos planean capturar tus desarrolladores, para que podamos construir un plan de trabajo que sea conveniente para ambas partes. Como regla general, sus desarrolladores no necesitan capturar la configuración completa ni darnos el “volante” del día.

Mecanismo bloqueos de transacciones Se utiliza para el acceso de usuarios competitivos al DBMS.
Una transacción es un tipo de operación continua durante la cual cambia el estado de la base de datos. Ésta es la cantidad mínima de cambio: no se puede realizar media transacción; si la transacción no se completa, la base de datos volverá a su estado inicial.
Dado que una transacción captura una matriz de datos, surge un matiz al acceder a esta matriz: por ejemplo, una transacción cambia los datos y otra intenta leerlos. El resultado de la lectura puede ser incorrecto, porque no incluirá los últimos cambios. Por tanto, el aislamiento de transacciones funciona a nivel de DBMS. Son posibles los siguientes niveles de aislamiento:

  • Leer no comprometido- mientras una transacción cambia la matriz, otra no puede cambiarla, pero puede leerla. Nivel más bajo de aislamiento.
  • Leer comprometido- mientras una transacción cambia la matriz, otra no puede cambiarla ni leerla
  • Lectura repetible- mientras una transacción lee la matriz, otra no puede cambiarla, pero puede leerla
  • Serializable- mientras una transacción lee la matriz, otra no puede cambiarla ni leerla. Todas las operaciones son secuenciales. Nivel máximo de aislamiento.

Si la configuración de 1C:Enterprise está establecida en modo de bloqueo automático, entonces el DBMS selecciona el nivel de aislamiento de la transacción. En el caso de MS SQL, estos serán niveles de lectura repetible o serializable, es decir, el aislamiento de datos está cerca del máximo. Esto resuelve problemas con la exactitud de los datos, pero puede provocar un bloqueo a nivel de DBMS durante el trabajo intensivo del usuario. Por lo tanto, 1C:Enterprise tiene su propia funcionalidad para trabajar con cerraduras, que se activa habilitando el modo de cerraduras administradas. En este caso, el nivel de aislamiento de transacción para MS SQL será de lectura confirmada. La propia plataforma aislará los datos sin depender del DBMS.

El modo de bloqueo administrado está habilitado en las propiedades de configuración:

Además, el modo de bloqueo se puede configurar para objetos de configuración específicos:

Si la configuración en su conjunto está configurada en modo de bloqueo automático, entonces todas las transacciones para todos los registros funcionarán en modo automático, independientemente del modo establecido para el objeto de configuración. Si es Administrado, de manera similar, todas las transacciones estarán en Administrado. Si el modo de configuración está establecido en Automático y controlado, entonces el modo para cada objeto estará determinado por su configuración.

Hay un punto para el modo Automático y Controlado. Una sola transacción para un usuario puede representar varias transacciones desde el punto de vista de la plataforma. Por ejemplo, publicar interactivamente un documento en un registro hace que dos transacciones: un registro del documento en sí y, dentro de esta transacción, un registro de un conjunto de filas por registro. Dependiendo del modo de gestión de bloqueo del propio documento y del registro que mueve, son posibles cuatro situaciones:

  1. Modo documento Automático, modo registro Automático ->
  2. Modo documento Gestionado, modo registro Gestionado -> registro por registro en modo gestionado
  3. Modo documento Automático, modo registro Controlado -> registro por registro en modo automático
  4. Modo documento Gestionado, modo registro Automático -> excepción (error)

Pregunta 06.59 del examen 1C: Plataforma Profesional. Al publicar un documento a través de cualquier registro, si el documento tiene un modo de administración automática de bloqueo de transacciones y el registro tiene un modo administrado (la opción "Automático y administrado" se usa en las propiedades de configuración), dicha publicación conducirá a:

La respuesta correcta es la segunda, la determinamos por la primera transacción, si es automática, entonces todo es automático.

Pregunta 06.60 del examen 1C: Plataforma Profesional. Al publicar un documento a través de cualquier registro, si el documento tiene un modo administrado para administrar bloqueos de transacciones y el registro tiene uno automático (en las propiedades de configuración se usa la opción "Automático y administrado"), dicha publicación conducirá a:

  1. a una situación de error
  2. toda la transacción se completará automáticamente
  3. toda la transacción se completará de manera controlada

La respuesta correcta es la primera, la determinamos por la primera transacción, si está controlada, entonces es un error.

Pregunta 06.61 del examen 1C: Plataforma Profesional. Al publicar un documento a través de cualquier registro, si el documento tiene un modo automático para administrar los bloqueos de transacciones y el registro tiene un modo administrado (la opción "Administrado" se usa en las propiedades de configuración), dicha publicación conducirá a:

  1. a una situación de error
  2. toda la transacción se completará automáticamente
  3. toda la transacción se completará de manera controlada

Mecanismo de gestión de bloqueo de datos en una transacción le permite bloquear datos modificables no mediante el sistema de gestión de bases de datos utilizado, sino mediante la plataforma. Esta gestión de bloqueo de datos no se realiza en términos de los datos del DBMS, sino en términos del área temática. Gracias a esto, los bloqueos se aplican con mayor precisión y aumenta la concurrencia de usuarios.

La configuración 1C:Enterprise 8 puede funcionar en uno de tres modos para administrar bloqueos en una transacción:

  • auto;
  • administrado: modo estándar para nuevas configuraciones;
  • automático y controlado.

EN modo automatico La gestión de bloqueo de datos utiliza los niveles de aislamiento de transacciones serializables y de lectura repetible proporcionados por el sistema de gestión de bases de datos. Estos niveles de aislamiento de transacciones garantizan una lectura consistente y coherente de los datos sin requerir ningún esfuerzo adicional de administración de bloqueos por parte del desarrollador.

Modo administrado le permite aumentar el paralelismo del trabajo del usuario en el modo de operación cliente-servidor mediante el uso de un nivel más bajo de aislamiento de transacciones de la base de datos (lectura confirmada). Al escribir datos en una transacción, los objetos de lenguaje integrados bloquean automáticamente los datos requeridos. El desarrollador necesita gestionar los bloqueos de datos en los casos en que la lógica empresarial requiere una lectura coherente y coherente de los datos en una transacción.

Automático y controlado El modo le permite utilizar la capacidad de administrar bloqueos en una transacción solo para algunos objetos de configuración. Este modo se puede utilizar para optimizar la simultaneidad del usuario con objetos de aplicación individuales (por ejemplo, algunos de los documentos más utilizados) o para realizar la transición gradual de configuraciones grandes al modo de administración de bloqueo de transacciones.

De forma resumida, las diferencias a la hora de trabajar en modo de bloqueo automático y en modo de bloqueo controlado se muestran en la siguiente tabla:

Muy a menudo, la necesidad de gestionar los bloqueos de datos en una transacción surge en el proceso de publicación de documentos, cuando es necesario leer y luego escribir datos modificados en las mismas tablas. Por ejemplo, si está monitoreando saldos al contabilizar un documento.

Especialmente para este fin, los conjuntos de registros de acumulación y registros contables tienen la propiedad Bloquear para cambiar.

Si se necesita controlar los saldos y luego registrar los movimientos en un mismo registro, entonces se debe configurar esta propiedad para el conjunto de registros de este registro en la propiedad Movimientos.

El efecto de esta propiedad es el mismo que si el desarrollador instalara de forma independiente (prescrito en el código) los bloqueos administrados necesarios para 1C:Enterprise 8. La plataforma instalará automáticamente el bloqueo administrado necesario al escribir este conjunto de registros. Como resultado, otras transacciones administradas que utilicen el mismo bloqueo no podrán comenzar a leer este registro hasta que se haya completado la transacción actual.

A continuación se muestra un ejemplo de control "manual" de bloqueos de datos al leer datos del registro de acumulación. Contabilidad de artículos en el procesamiento de documentos Factura de venta. En este ejemplo, los bloqueos administrados se crean y configuran completamente utilizando el lenguaje integrado.