Cuellos de botella en la base de datos de archivos: cómo evitarlos (según la experiencia reciente). Ralentizaciones basadas en archivos: cómo evitar (según la experiencia reciente) La versión basada en archivos ralentiza 1C 8.3 en la red

2. Características del programa. A menudo, incluso con la configuración óptima, 1C funciona muy lentamente. El rendimiento cae especialmente cuando el número de personas que trabajan simultáneamente con la base de datos supera los 4-5 usuarios.

¿Quién eres en la empresa?

La solución al problema del funcionamiento lento de 1C depende de quién sea usted en la empresa. Si eres un aficionado a la tecnología, sigue leyendo. Si eres director o contador, sigue el enlace especial ↓

Ancho de banda de la red

Como regla general, no uno, sino varios usuarios trabajan con una base de información (IS). Al mismo tiempo, existe un intercambio constante de datos entre la computadora en la que está instalado el cliente 1C y la computadora en la que se encuentra la seguridad de la información. El volumen de estos datos es bastante significativo. A menudo surge una situación en la que una red local que funciona a una velocidad de 100 Mbit/s, que es la velocidad más común, simplemente no puede soportar la carga. Y nuevamente el usuario se queja de que el programa es lento.

Cada uno de estos factores individualmente ya reduce significativamente la velocidad del programa, pero lo más desagradable es que normalmente estas cosas se suman.

Ahora veamos varias soluciones al problema de la baja velocidad de 1C y su costo, usando el ejemplo de una red local de 10 computadoras de tamaño mediano.

Solución uno. Modernización de infraestructura

Esta es quizás la solución más obvia. Calculemos su coste mínimo.

Como mínimo, para cada ordenador necesitamos una memoria RAM de 2 GB, que cuesta una media de 1.500 rublos, una tarjeta de red que admita una velocidad de 1 Gbit/s cuesta unos 700 rublos. Además, necesitará al menos 1 enrutador que admita una velocidad de 1 Gbit/s, lo que costará aproximadamente 4000 rublos. Costo total: 26.000 rublos por equipo, sin incluir el trabajo.

En principio, la velocidad puede aumentar significativamente, pero ahora ya no es posible comprar ordenadores económicos para la oficina. Además, esta solución no es aplicable para quienes utilizan Wi-Fi o quieren trabajar a través de Internet; en su caso, la velocidad de la red puede ser decenas de veces menor. Surge la idea: "¿No es posible implementar todo el programa en un servidor potente, de modo que el ordenador del usuario no participe en cálculos complejos, sino que simplemente sirva para transferir la imagen?" Entonces podrás trabajar incluso en ordenadores muy débiles, incluso en redes con poco ancho de banda. Naturalmente, tales soluciones existen.

Solución dos. Servidor de terminal

Ganó gran popularidad en los días de 1C 7. Está implementado en la versión de servidor de Windows y hace un buen trabajo con nuestra tarea. Sin embargo, tiene sus inconvenientes: el coste de las licencias.

El sistema operativo en sí costará unos 40.000 rublos. Además de esto, necesitaremos para todos los que planeen trabajar en 1C una licencia CAL de Windows Server, que cuesta alrededor de 1700 rublos, y una licencia CAL de Servicios de Escritorio remoto de Windows, que cuesta alrededor de 5900 rublos.

Habiendo calculado el coste de una red de 10 ordenadores, obtenemos 116.000 rublos. sólo para una licencia. Agregue a esto el costo del servidor en sí (al menos 40,000 rublos) y el costo del trabajo de implementación; sin embargo, incluso sin esto, el precio de las licencias resultó ser impresionante.

Solución tres. Servicio 1C Empresa

1C ha desarrollado su propia solución a este problema, que permite aumentar significativamente la velocidad del programa. Pero aquí también hay un matiz.

El hecho es que el costo de una solución de este tipo oscila entre 50.000 y 80.000 rublos, según la edición. Para una empresa de hasta 15 usuarios resulta bastante caro. Se depositaron grandes esperanzas en el "miniservidor empresarial 1C", que, según la empresa 1C, está dirigido a pequeñas empresas y cuesta entre 10.000 y 15.000 rublos.

Sin embargo, cuando salió a la venta, este producto fue una gran decepción. El caso es que el número máximo de usuarios con los que se podía utilizar el miniservidor era sólo 5.

Como escribió un programador de 1C en el foro: “¡Aún no está claro por qué 1C eligió exactamente 5 conexiones! Los problemas solo empiezan con 4 usuarios, pero con cinco se acaba todo. Si quieres conectar a una sexta persona, paga otros 50 mil. Podríamos hacer al menos 10 conexiones…”

Por supuesto, el miniservidor también encontró su consumidor. Sin embargo, para las empresas donde trabajan 5 o más personas con 1C, no ha aparecido una solución sencilla y económica.

Además de los métodos de aceleración del programa descritos anteriormente, existe otro que es ideal para el segmento de 5 a 15 usuarios: el acceso web para 1C en modo archivo.

Solución cuatro. Acceso web para 1C en modo archivo

El principio de funcionamiento es el siguiente: en la computadora se instala una función adicional de servidor web, en el que se publica la seguridad de la información.

Naturalmente, esta debería ser la computadora más poderosa de la red o una máquina separada dedicada a esta función. Después de eso, podrá trabajar con 1C en modo servidor web. Todas las operaciones pesadas se realizarán en el lado del servidor y se minimizará el tráfico transmitido a través de la red, al igual que la carga en la computadora del cliente.

Por lo tanto, incluso las máquinas más débiles pueden usarse para trabajar en 1C y el ancho de banda de la red deja de ser crítico. Nuestras pruebas han demostrado que puedes trabajar cómodamente a través de Internet móvil en una tableta económica sin sentir molestias.

Esta opción es inferior al servidor empresarial 1C en términos de velocidad de funcionamiento, pero esta diferencia es prácticamente invisible hasta entre 15 y 20 usuarios. Por cierto, para implementar un servidor web puedes usar IIS (para Windows) y Apache (para Linux) ¡y ambas soluciones son gratuitas!

A pesar de las ventajas obvias, este método para optimizar el funcionamiento de 1C no ha ganado mucha popularidad.

No puedo asegurarlo, pero lo más probable es que se deba a dos motivos:

  • Una descripción bastante débil en la documentación técnica.
  • Ubicado en la intersección de responsabilidades del administrador del sistema y el programador 1C.

Por lo general, cuando se le acerca a un administrador del sistema un problema de baja velocidad, éste le ofrece actualizar la infraestructura o un servidor de terminal; si contactan a un especialista de 1C, le ofrecen un servidor empresarial de 1C. Entonces, si en su empresa un especialista responsable de la infraestructura y un especialista responsable de 1C trabajan "de la mano", entonces puede utilizar de forma segura una solución basada en un servidor web.

Aceleremos 1C. De forma remota, rápida y sin tu participación

Sabemos cómo acelerar 1Ski sin molestar al cliente. Profundizamos en el problema, hacemos nuestro trabajo y nos vamos. Si desea que el programa funcione normalmente, contáctenos. Lo resolveremos.

Deje una solicitud y reciba una consulta gratuita sobre cómo acelerar el programa.

En muchos sentidos, la optimización de 1C y la velocidad de trabajo dependen del trabajo con bloqueos, consultas e índices. Intentaremos responder a la pregunta "cómo acelerar el trabajo de 1C" (la cuestión de cómo acelerar el lanzamiento de 1C la consideraremos en otro artículo) y evitaremos las quejas de los usuarios sobre el "largo procesamiento de documentos", que inevitablemente afecta los procesos de negocio.

Parte 3. Rendimiento de 1C

Cerraduras en 1C 8.3: búsqueda y eliminación en el código, transferencia a cerraduras administradas

Las cerraduras son parte del mecanismo ACID. Consideremos su concepto, presentado en forma de diagrama simplificado, usando el ejemplo de SQL SERVER.

En modo automático, los bloqueos los gestiona el propio DBMS. Al mismo tiempo, aparecieron efectos secundarios en el servidor MS SQL, como el bloqueo de tablas vacías y rangos de datos fronterizos (nivel serializable), lo que creó problemas adicionales en el trabajo multiusuario. Para resolver estos problemas, 1C creó cerraduras controladas.

Cerraduras controladas 1C

El mecanismo de bloqueo se trasladó al servidor 1C y, a nivel de DBMS, el aislamiento se redujo al mínimo. En MS SQL, el nivel de aislamiento se redujo a Lectura confirmada con un mecanismo de bloqueo compartido en la plataforma 8.2 y un mecanismo de control de versiones de fila en la plataforma 8.3 (el llamado aislamiento de instantáneas confirmadas de lectura). Más precisamente, esta es la propiedad de la base de datos del mismo nombre y dos modos operativos de lectura confirmada que dependen de este parámetro.

En el último nivel de aislamiento (RCSI), el mecanismo hizo posible no cruzar transacciones de lectura y escritura en los mismos recursos en el servidor DBMS. Todo el trabajo principal fue asumido por el servicio de bloqueo 1C, que determina, en función de los metadatos nativos, si se permiten o no transacciones al servidor DBMS, para que no haya violaciones de la lógica empresarial. Los problemas con el bloqueo de tablas vacías y rangos de bordes son cosa del pasado.

SGBD Tipo de bloqueo Nivel de aislamiento de transacciones Leer fuera de la transacción
Cerraduras automáticas
Base de datos de archivos Mesas Serializable lectura sucia
Servidor MS SQL Publicaciones lectura sucia
DB2 Publicaciones Lectura repetible o serializable lectura sucia
PostgreSQL Mesas Serializable Lectura consistente
Base de datos Oracle Mesas Serializable Lectura consistente
Cerraduras administradas
Base de datos de archivos Mesas Serializable lectura sucia
Servidor MS SQL 2000 Publicaciones Leer comprometido lectura sucia
MS SQL Server 2005 y superior Leer instantánea confirmada Lectura consistente
IBM DB2 anterior a la versión 9.7 Publicaciones Leer comprometido lectura sucia
IBM DB2 versión 9.7 y superior Publicaciones Leer comprometido Lectura consistente
PostgreSQL Publicaciones Leer comprometido Lectura consistente
Base de datos Oracle Publicaciones Leer comprometido Lectura consistente

Para saber en qué modo de bloqueo se encuentra la base de datos del programa 1C, debe ejecutar la siguiente solicitud desde SSMS en el contexto de la base de datos deseada:


Cerraduras 1C. El usuario no esperará a que se bloqueen, 1C acelerará si cumple con ciertas reglas:

  • La duración de las transacciones debe reducirse tanto como sea posible. Realizar cálculos prolongados en una transacción en el 100% de los casos provocará un bloqueo cuando se trabaja en un sistema OLTP.
  • Se eliminan las operaciones externas prolongadas dentro de una transacción, por ejemplo, enviar y recibir confirmaciones por correo electrónico, trabajar con el sistema de archivos y otras acciones adicionales. Todas las operaciones deben ubicarse en tareas cortas diferidas.
  • Las consultas están optimizadas al máximo.
  • Los índices deben crearse solo cuando sea necesario para garantizar un rendimiento óptimo de las consultas dentro de la aplicación.
  • Se han minimizado las inclusiones de columnas actualizadas con frecuencia en el índice agrupado. Las actualizaciones de una columna de clave de índice agrupado requieren un bloqueo tanto en el índice agrupado como en todos los índices no agrupados (porque su fila de localización contiene la clave de índice agrupado).
  • Siempre que sea posible, se crea y utiliza un índice de cobertura para reducir el tiempo de recuperación de datos.
  • Usar el nivel más bajo de aislamiento de transacciones, lo que requerirá cambiar al modo de bloqueo administrado.

Herramientas para diagnosticar bloqueos:

  • Revista de tecnología;
  • Centro de gestión del rendimiento de las herramientas 1C;
  • Servicios en la nube de Gilev;

A continuación se muestra un ejemplo de monitoreo del sistema utilizando el servicio Gilev. La duración total del bloqueo es de ~15 horas. Más de 400 usuarios activos. Después de tomar decisiones y optimizar, los tiempos de espera son de menos de un minuto y la cantidad de bloqueos se ha reducido aproximadamente 670 veces.

Era:



Convertirse:


En una situación en la que "todo se bloquea y lleva mucho tiempo" y los servicios de monitoreo no están configurados o no se utilizan en absoluto, recordando el principio de Pareto, es necesario concentrarse en el código.

En modo automático, la presencia de bloqueos en el servidor se puede detectar mediante un procedimiento del sistema en el contexto de la base de datos deseada. Este procedimiento almacenado permite determinar en qué modo funcionan las cerraduras, su estado, tipo, etc.:



Una vez finalizado el procedimiento para 1C, puede obtener información visual sobre lo que está sucediendo actualmente en el servidor, teniendo en cuenta los detalles de las tablas 1C:


Fragmento 1

//Bloqueos en términos de 1C SELECT * FROM dbo.ReturnLockName1C(DEFAULT,DEFAULT) as t Donde TableName1C NO ES UN ORDEN NULO POR t.Resource

El uso de este mecanismo permite obtener información completa sobre las cerraduras actuales. Si el informe contiene solo bloqueos S, el problema puede ser una consulta o consultas de larga duración. Para establecer la causa y el lugar de su aparición en el código, puede tomar diferentes caminos: usar objetos DMO del servidor SQL (pero tenga en cuenta que los datos de ellos se restablecen después de reiniciar el servidor) o configurar el recopilador de datos, guardar datos de seguimiento en tablas durante un tiempo determinado. Lo principal es recibir los textos de las solicitudes problemáticas.

Uso de objetos DMO de SQL Server

Mostramos la fecha de inicio del servidor para comprender la relevancia de los datos. Dividimos el paquete según la clasificación de lectura (física, lógica, carga del procesador). En este caso, se utilizan los datos maestros de sys.dm_exec_query_stats. Traducimos el texto de la solicitud a términos 1C. Si puede comprender el contexto de la llamada a partir del texto de la solicitud, entonces todo lo que queda es mirar el plan de la solicitud, encontrar operadores problemáticos y comprender qué se puede hacer.

Fragmento 2

//hora de inicio SELECCIONE sqlserver_start_time DESDE sys.dm_os_sys_info; // Principales solicitudes de lectura física SELECT TOP (50) (total_physical_reads) AS Total_physical_reading,

Identificación de consultas problemáticas como resultado de la recopilación del recopilador de datos

Con esta herramienta, puede clasificar los datos según los parámetros necesarios, como la carga del procesador, la duración, las E/S lógicas y las operaciones de lectura física, lo que le permite guardar estadísticas completas para su posterior análisis, a pesar de reiniciar el servidor SQL.


Una vez que el servidor recopila las solicitudes problemáticas sin supervisión de terceros, puede clasificar los datos recibidos según los parámetros necesarios.

A continuación, al activar el registro tecnológico y especificar en la configuración "búsqueda por cadena" y la parte de la solicitud que se garantiza que se encontrará, podrá averiguar desde dónde se llamó la solicitud problemática. Si el servidor tiene varias bases de datos o se conoce el nombre de usuario, vale la pena agregar campos adicionales para el filtro para reducir la carga en el servidor al recopilar el registro del proceso.

Un ejemplo de solicitud problemática y un ejemplo de configuración de un registro tecnológico:



Optimización de consultas como oportunidad para acelerar 1C 8.3


Las consecuencias de consultas subóptimas pueden manifestarse en forma de procesamiento prolongado de documentos, generación de informes dolorosamente larga, congelaciones del sistema y otros eventos desagradables.

Cuando trabaje con solicitudes, NO PUEDE:

  • Unir tablas con subconsultas;
  • Conecte mesas regulares con mesas virtuales;
  • Utilice "O" lógico en las condiciones;
  • Utilice subconsultas en condiciones de unión;
  • Reciba datos mediante un punto de campos de tipo compuesto sin la palabra clave "Express".

Al trabajar con solicitudes, USTED PUEDE:

  • Crear índices sobre condiciones de consulta, unir, agregar y ordenar campos;
  • El filtrado de tablas virtuales debe realizarse mediante parámetros de selección.

Uso de índices y su impacto en la calidad del rendimiento del sistema

Se ha escrito mucho sobre los índices, la necesidad de su uso y el impacto en la calidad del funcionamiento del sistema. Intentemos comprender las complejidades del "diseño" de los índices, las opciones de aplicación y las ventajas sobre las tablas normales.

La indexación es una parte importante del kernel DBMS. Índices faltantes, o viceversa, un número excesivo de ellos, afectan la velocidad de recuperación, modificación, adición y eliminación de datos. Veamos la indexación usando el ejemplo del DBMS de Microsoft más común.

Para una comprensión general de cómo funciona esto, veamos los detalles del mecanismo de almacenamiento de datos, que normalmente representamos en forma de tabla (por ejemplo, Excel).

La unidad de almacenamiento físico de datos es la página, un módulo de 8 KB que pertenece a un solo objeto (por ejemplo, una tabla o un índice). Una página es la unidad más pequeña para leer y escribir. Las páginas se recopilan en extensiones. Una extensión consta de 8 páginas consecutivas. Las páginas de extensión pueden pertenecer a uno o más objetos. Cuando las páginas pertenecen a varios objetos, la extensión se denomina "mixta".

Su contenido se puede ver a continuación:





Ahora que tenemos una idea de cómo funciona una unidad de almacenamiento en disco, hablemos más sobre tablas e índices.

De forma predeterminada, si no utiliza declaraciones T-SQL especiales, la tabla vacía se crea como un "montón". un conjunto simple de páginas y extensiones. Los datos del montón no tienen ningún orden lógico. El motor de SQL Server realiza un seguimiento de la propiedad de la página y la extensión de un objeto específico mediante páginas especiales del sistema denominadas mapas de asignación de índice. Cada tabla o índice tiene al menos una página IAM, denominada "primera página IAM".


Por lo tanto, después de crear una tabla normal, por defecto, el resultado es una disposición caótica de datos. Puede ver el estado de la tabla mediante el siguiente procedimiento:


Los principales índices utilizados por la plataforma 1C.

Fragmento 3

Mitos y realidad:

Mito uno: los índices agrupados y una tabla de datos son dos entidades diferentes, almacenadas por separado.

Mito dos: puede haber muchos índices agrupados en una tabla.

Descargué un programa para optimizar el DBMS. Índices recomendados creados. La velocidad de muestreo aumentó en un 50%. Cambiar y agregar datos se ralentizó 7 veces.

Índice agrupado (agrupado)

Los índices agrupados son un conjunto de páginas que clasifican y almacenan filas de datos en tablas o vistas en función de sus valores clave: las columnas incluidas en la definición del índice. Existe una limitación en este tipo de índice de 16 columnas y 900 bytes. Para cada mesa solo hay un índice agrupado, porque las filas de datos solo se pueden ordenar en un orden. La creación de un índice agrupado se produce reorganizando la tabla en lugar de copiar los datos, lo que permite que la tabla se almacene como un árbol equilibrado.

Fragmento 4

SELECCIONE NOMBRE, TIPO, TYPE_DESC DESDE sys.indexes DONDE object_id = OBJECT_ID("Datos de seguimiento")

Índice no agrupado

Los índices no agrupados tienen una estructura separada de las filas de datos. Un índice no agrupado contiene los valores de la clave del índice agrupado, y cada registro contiene la clave del índice agrupado (no RID, ya que las tablas 1C no usan montones, con raras excepciones).

Puede agregar columnas sin clave al nivel de hoja de un índice no agrupado y omitir el límite de clave de índice existente (900 bytes y 16 columnas de clave) ejecutando consultas completamente indexadas.

Después de agregar un índice no agrupado, se copiaron los datos y apareció otro objeto:



Fragmento 5

SELECCIONE NOMBRE, TIPO, TYPE_DESC DESDE sys.indexes DONDE object_id = OBJECT_ID("Datos de seguimiento")

Esquema del índice agrupado después de recuperarlo del montón en forma de árbol equilibrado:



Esquema de un índice no agrupado derivado de una tabla agrupada (tenga en cuenta que la columna del localizador de filas tiene una clave de índice agrupada):



Impacto de los índices en el rendimiento de las consultas.

Utilizando un índice, el optimizador de consultas busca las columnas clave en el índice, encuentra dónde se almacenan las filas de la consulta y recupera las filas coincidentes desde allí. Buscar en un índice es mucho más rápido que buscar en una tabla porque, a diferencia de una tabla, un índice suele contener menos columnas por fila y las filas están ordenadas en orden.

La creación de múltiples índices conduce al hecho de que la velocidad de muestreo aumenta y la velocidad de escritura durante la modificación se reduce significativamente. Para resolver este problema, en primer lugar, debe eliminar los índices innecesarios o primero bloquearlos sin eliminarlos, lo que le permitirá simplemente habilitarlos si surge la necesidad.

Tenga en cuenta que un índice agrupado no se puede bloquear bajo ninguna circunstancia, porque esto bloqueará el acceso a los datos de la tabla. Esto sólo se aplica a los índices que usted mismo creó mediante T-SQL. La razón para crear índices utilizando T-SQL, sin pasar por 1C:Enterprise, se debe, en primer lugar, a las capacidades limitadas de la plataforma 1C en términos de manipulación de índices e inclusión de campos adicionales en el índice creado.

Declaración T-SQL que realiza la acción de bloquear un índice:

//Bloquear un índice separado en la tabla -ALTER INDEX _Reference22_ByPredefinidoIDNotUniq ON _Reference22 DISABLE; //Incluir el índice deseado -ALTER INDEX _Reference22_ByPredefinidoIDNotUniq ON _Reference22 REBUILD;

Además de los pasos anteriores, es importante crear un grupo de archivos en un disco físico que no contenga los archivos de la base de datos actual y mover allí los índices no agrupados. Esto acelerará la modificación de datos al paralelizar su registro.

Determinar qué índices son necesarios o innecesarios para acelerar las consultas

De forma predeterminada, 1C crea un determinado conjunto básico de índices. A menudo, simplemente no hay suficientes. SQL Server tiene mecanismos que le permiten comprender, según su carga de trabajo, qué tan necesarios son sus índices existentes.

El Asesor de optimización de motor de base de datos analiza las bases de datos y hace recomendaciones para optimizar el rendimiento de las consultas. Se puede utilizar para seleccionar y crear conjuntos de índices óptimos sin tener un nivel experto de comprensión del diseño de bases de datos o los procesos internos de SQL Server. El Asistente de configuración del motor de base de datos le permite realizar las siguientes tareas:

  • Solucionar problemas en el desempeño de una consulta problemática específica;
  • Configure un gran conjunto de consultas en una o más bases de datos.

DMO (objetos de gestión dinámica), que incluyen vistas de gestión dinámica y funciones de gestión dinámica. Por ejemplo, una declaración T-SQL puede recuperar todos los índices que no se han utilizado desde la última vez que se inició el servidor.



Fragmento 6

CON vl como (SELECCIONAR NOMBRE_OBJETO(I.object_id) COMO nombreobjeto, I.nombre COMO nombreíndice, I.index_id COMO indexid DESDE sys.indexes COMO ME UNO INTERIOR a sys.objects COMO O ON O.object_id = I.object_id DONDE I.object_id > 100 Y I.type_desc = "NONCLUSTERED" Y I.index_id NO EN (SELECCIONE S.index_id DE sys.dm_db_index_usage_stats COMO S DONDE S.object_id=I.object_id Y I.index_id=S.index_id Y base de datos_id = DB_ID("Database_name '))) SELECCIONE el nombre del objeto, T1.NameTable1C, indexid, indexname FROM vl OUTER APPLY dbo.ReturnTableName1C(objectname) as T1 ORDER BY objectname, indexname;

Instrucciones que se pueden utilizar para crear los índices necesarios recomendados por el kernel DBMS:



Fragmento 7

SELECCIONE T1.NameTable1C como Table_Name_1C, "CREAR ÍNDICE" + "ON"
El optimizador de consultas, al generar el plan de ejecución de consultas, identifica la necesidad de crear el índice faltante. Almacena esta información en XML ShowPlan. Porque Los planes de consulta se procesan y las instrucciones se guardan (hasta el próximo reinicio del servidor), luego se pueden recuperar, procesar y obtener instrucciones listas para crear los índices necesarios para cualquier plan de ejecución en el caché. Vale la pena prestar atención a la frecuencia de ejecución de la consulta: cuanto mayor es, más relevantes son los resultados de la consulta y, en consecuencia, los indicadores recopilados. Si la consulta se ejecutó una vez, sus resultados no son tan indicativos.


Fragmento 8

APLICACIÓN CRUZADA query_plan.nodes('//StmtSimple") AS stmt(stmt_xml) DONDE stmt_xml.exist("QueryPlan/Missinglndexes") = 1) SELECCIONE TOP 30 Nombre de base de datos como Nombre de base de datos, Nombre de tabla como Nombre de tabla, T1.NameTable1C como Nombre de tabla 1C, columna_igualdad ns como columnas_de_comparación, columnas_incluidas como columnas_para_incluir,

Fragmento 9

USAR [nombre_base_datos] IR A CREAR ÍNDICE NO CLUSTERADO EN .[_Document497] ([_Fld12771_TYPE],[_Fld12771_RTRef]) INCLUIR ([_Date_Time],[_Fld12771_RRRef],[_Fld12782RRef],[_Fld12784]) IR Algunas características de indexación por campos agregados y campos de clasificación.

Crear un índice en las columnas especificadas en la cláusula ORDER BY ayuda al optimizador de consultas a organizar rápidamente el conjunto de resultados porque los valores de las columnas se ordenan de antemano en el índice. La implementación interna del mecanismo GROUP BY también ordena primero los valores de las columnas para agrupar rápidamente los datos requeridos.

Cuando se utilizan recomendaciones estándar, vale la pena comprobar el resultado antes y después de la optimización. Demos un ejemplo del uso de la unión lógica "O" y su alternativa (para resolver el problema usando recomendaciones estándar): la técnica de cambiar una consulta usando la sintaxis "UNE TODOS".

La solicitud 1C se realiza con “O”:

SELECCIONE Código, Nombre, Enlace DESDE Directorio. Contrapartes COMO Contrapartes DONDE Contrapartes. Código = "000000004" O Contrapartes. Código = "0074853" O Contrapartes. Código = "000000024" O Contrapartes. Código = "009679294" O Contrapartes. Código = " 0074742" O Contrapartes.Code = "000000104";

Modificando la consulta con “UNIR TODOS”:

SELECCIONAR Código, Nombre, Enlace DESDE Directorio. Contrapartes COMO Contrapartes DONDE Contrapartes. Código = "000000004" COMBINAR TODO SELECCIONAR Código, Nombre, Enlace DESDE Directorio. Contrapartes COMO Contrapartes DONDE Contrapartes. Código = "0074853" COMBINAR TODO SELECCIONAR Código, Nombre, Enlace DESDE Directorio.Contrapartidas COMO Contrapartes DONDE Contrapartes.Código = "000000024" COMBINAR TODO SELECCIONAR Código, Nombre, Enlace DESDE Directorio.Contrapartes COMO Contrapartes DONDE

Plan de consulta real (para facilitar la visualización y la comparación de rendimiento, las consultas se interceptan y ejecutan en SSMS):


En este caso, después de la optimización, el rendimiento se redujo a la mitad debido al uso repetido del operador Key Lookup, que siempre va acompañado del operador Nested Loops. Por lo tanto, cuando utilice un esquema de optimización de consultas, debe medir el tiempo objetivo antes y después de utilizar las mejoras. Este ejemplo se muestra con el propósito de “confiar pero verificar”, ya que puede haber inconsistencia entre las recomendaciones típicas y los problemas prácticos.

Cómo acelerar el trabajo en 1C: Contabilidad 8.3 (edición 3.0) o deshabilitar tareas rutinarias y en segundo plano

2019-01-15T13:28:19+00:00

Aquellos de ustedes que ya han cambiado a la nueva edición de 1C: Contabilidad 8.3 (edición 3.0) han notado que se ha vuelto más lenta que la 2. Algunas ralentizaciones extrañas, interminables tareas en segundo plano varias veces al día, que nadie le pedía que realizara sin nuestro conocimiento.

Mis contadores me dijeron inmediatamente después de la transición que la nueva edición de 1C: Contabilidad 3.0 es francamente lenta en comparación con las anteriores. Y es simplemente imposible trabajar.

Empecé a investigar y muy pronto descubrí que la causa principal de los bloqueos y la posterior insatisfacción de los usuarios son las tareas rutinarias y en segundo plano, muchas de las cuales están habilitadas de forma predeterminada, aunque para la gran mayoría de los contables no son necesarias.

Bueno, por ejemplo, ¿por qué necesitamos ejecutar la tarea “Extracción de texto” cien veces al día si no realizamos una búsqueda de texto completo (contables, no se alarmen) en todos los objetos de nuestra base de datos?

O ¿por qué descargar constantemente tipos de cambio si no tenemos transacciones de divisas o las hacemos ocasionalmente (y antes de eso nosotros mismos podemos hacer clic en el botón de descargar tipos de cambio)?

Lo mismo se aplica al intento constante de 1C de conectarse al sitio y verificar y actualizar los clasificadores bancarios. ¿Para qué? Yo mismo presionaré el botón para actualizar los clasificadores si no encuentro el banco correcto por su BIC.

Cómo hacer esto paso a paso a continuación.

1. Vaya a la sección "Administración" y seleccione "Mantenimiento" () en el panel de acciones:

2. En la ventana que se abre, busque y seleccione "Tareas de rutina y en segundo plano":

3. Abra cada tarea que tenga "Activado" en la columna "Activado". hay una grajilla.

4. Desmarque "Activado" y haga clic en el botón "Guardar y cerrar".

5. Haz esto con cada una de las tareas incluidas y disfruta de la nueva edición. En general, en mi opinión, es mucho mejor que dos.

Al mismo tiempo, la plataforma seguirá habilitando algunas de las tareas programadas que deshabilitaste.

El sistema 1C es hoy una de las principales herramientas para gestionar pequeñas y medianas empresas. Como regla general, todos los empleados de la organización tienen acceso al programa. Por lo tanto, si 1C comienza a desacelerarse o a funcionar lentamente, esto afecta significativamente la realización de negocios. Veamos cómo puede usted mismo acelerar y optimizar el trabajo en 1C.


Optimización usando la actualización 1C

Las nuevas versiones de 1C siempre funcionan con mayor éxito y rapidez, por lo que es imperativo seguir las actualizaciones. Se recomienda actualizar sus registros contables con la mayor frecuencia posible. Especialmente cuando se publican versiones de informes regulados.

Mucha gente ha estado utilizando la capacidad de actualizar automáticamente el programa durante mucho tiempo. Aunque este problema se puede resolver fácilmente de forma manual para 1C Enterprise 8.3, la actualización no causará ningún problema.

El primer paso es descargar la última versión de la plataforma que estás utilizando actualmente. Esto se hace utilizando el disco ITS o a través de la interfaz web, donde brindan soporte continuo a los usuarios de un programa como 1c Enterprise 8.3, cuya actualización de configuración también se proporciona oficialmente.

En este último caso, el archivo con los datos actualizados se descarga por separado. Se descomprime en cualquier carpeta que se considere más conveniente para el usuario. Luego necesitas ejecutar el archivo .exe. En la siguiente ventana, simplemente haga clic en el botón "Siguiente".

Aparecerá otra página. En él, el usuario selecciona la ruta en la que se completa la instalación. Pero este paso se recomienda sólo para propietarios avanzados de computadoras personales. Las funciones predeterminadas suelen ser suficientes para resolver la mayoría de los problemas. De forma predeterminada, en este caso, se especifica una carpeta donde se instalan todas las actualizaciones a la vez. Esto es mucho más conveniente que cuando los caminos finales son diferentes. Simplemente hacemos clic varias veces en los botones “Siguiente” en el programa 1c Enterprise 8.3, cuya configuración debería actualizarse rápidamente.

Todo lo que queda es el botón final, que ofrece "Instalar".

Cómo acelerar 1C si la plataforma es lenta

Los problemas suelen surgir del hecho de que en una de las etapas disminuye la concentración de atención del artista. Aquí es importante elegir el esquema de actualización correcto, solo que en este caso no encontraremos ningún problema cuando 1c se congele durante la actualización.

Actualización de la versión 7.7

Hay varios tipos de configuración. Dependiendo de esto, se elige el curso de acciones futuras.

  • Estándar: en este caso se supone que la actualización también se realiza para los informes regulados.
  • Las configuraciones típicas de la industria recuerdan en gran medida a las opciones anteriores. Es importante leer previamente las instrucciones proporcionadas por el desarrollador. De lo contrario, no podrá descubrir por qué falla 1C 8.3 durante la actualización.
  • Estándar modificado: el usuario siempre tiene la oportunidad de modificar él mismo la aplicación para que satisfaga las necesidades actuales. Otra opción para ampliar la funcionalidad es pasar a nuevas plataformas. Por ejemplo, la versión 8.

Acerca de las versiones 8.0 y 8.1

Actualmente, la plataforma 8.0 ya está siendo retirada del soporte. Los nuevos desarrollos estándar solo funcionarán cuando se utilicen las últimas versiones. Sólo hay que recordar que todas las versiones intermedias se completan sin falta. De lo contrario, existe una alta probabilidad de simplemente perder información. O encontrarse con una situación en la que 1c se congela al actualizar la configuración.

Una opción es posible cuando se implementa una nueva configuración estándar y luego se le transfieren los restos de las antiguas bases de datos de información.

En cuanto a la versión 8.1, puedes actualizarla de varias formas:

  1. a mano;
  2. en modo automático;
  3. contactar con especialistas de empresas que prestan servicios en esta área.

Trabajar con versiones no estándar o modificadas

Inicialmente, cualquier configuración se refiere a desarrollos estándar. Deja de serlo si se realizan ciertos cambios en la empresa. Por ejemplo, durante la instalación. Hay dos clases que se destacan entre las configuraciones no estándar:

  1. cambió;
  2. creado desde cero, teniendo en cuenta las necesidades de una empresa específica.

A veces, una configuración de segunda clase se distribuye activamente entre los usuarios. Entonces se considera típico. Es solo que no se considera que el fabricante sea 1C, sino la empresa que creó la nueva versión.

Las configuraciones se pueden mantener actualizadas mediante las siguientes acciones:

  • Error de corrección.
  • Ampliación de funcionalidad.
  • Mejora.
  • Cambio en 1C 8.3, la configuración no se actualiza en caso de errores de mantenimiento.

El proceso de instalación puede tardar diferentes tiempos dependiendo de la velocidad de Internet a la que lo esté utilizando actualmente. En una ventana separada, el usuario selecciona si desea actualizar al finalizar el trabajo o inmediatamente. Con la última opción, debes asegurarte de que nadie más esté trabajando con la aplicación. El proceso en sí implica el uso del modo exclusivo dentro de la aplicación 1c Enterprise 8.3, la última actualización no es una excepción.

  • Debemos recordar que no todas las versiones pueden ser adecuadas para la configuración actual.
  • Si no se han realizado actualizaciones durante mucho tiempo, es posible que deba descargar varios archivos o archivos a la vez.
  • En la lista es fácil entender qué versión de 1C Enterprise 8.3 se necesita, la actualización la selecciona el usuario.

Cuando se completa el proceso, se puede cerrar el Configurador. Este modo se utiliza con mayor frecuencia si es necesaria una actualización. Es conveniente y automatiza casi todo el proceso. Al iniciarlo por primera vez, puede aparecer un mensaje indicando que la plataforma está desactualizada. Y que no es recomendable utilizarlo en estos momentos.

Razones adicionales para frenar

Sin embargo, si el programa se actualiza correctamente y sin errores, 1C aún se ralentiza, entonces el motivo puede ser el siguiente:

  • Antivirus: si se configura correctamente, ningún antivirus interferirá con el sistema; sin embargo, si usa la configuración de fábrica, el rendimiento de 1C puede disminuir entre un 5% y un 10%. Puede optimizar su antivirus utilizando configuraciones adicionales eliminando el modo de fondo (si es absolutamente necesario).
  • Parámetros de la computadora: las computadoras a menudo insuficientemente potentes conducen a una disminución significativa en el rendimiento de 1C. Se debe prestar especial atención a la tarjeta de video, el sistema operativo y el procesador.

Estos métodos optimizarán y acelerarán significativamente el trabajo en 1C para cualquier empresa o emprendimiento, después de lo cual el rendimiento del programa aumentará significativamente.

Cómo aumentar la velocidad y facilidad de uso en 1C

Síntomas e historia del paciente:

El trabajo de varios usuarios en la red con el mismo archivo (base de datos) incluye un mecanismo de bloqueo de red. Esto obliga al sistema a perder un tiempo valioso identificando sesiones de grabación abiertas y resolviendo conflictos en consecuencia.

Los principales signos de operación de bloqueo:

  • trabajo rápido del usuario con la base de datos a través de la red en modo exclusivo y extremadamente lento cuando varios usuarios trabajan simultáneamente
  • Experiencia de usuario rápida con una base de datos local en el servidor y trabajo lento en la red.
  • los accesos al sistema de archivos son de poco menos de 10 MB/seg.

Entonces, me encomendaron la tarea de asegurarme de que hasta tres usuarios pudieran trabajar en 1C al mismo tiempo. Gracioso, ¿no?

Me olvidé de todos los chistes cuando vi con lo que tenía que lidiar: un “servidor” en forma de una computadora de oficina normal y dos portátiles.

La felicidad sería incompleta si no fuera por los maravillosos sistemas operativos: Windows 7 en una computadora y en una computadora portátil, Windows 8 en la otra.

Al intentar publicar documentos simultáneamente en computadoras portátiles, una se quedó atascada durante aproximadamente un minuto y la segunda se salió de 1C con el texto de error "no se pudo bloquear la mesa...".

El lanzamiento de 1C en una computadora portátil es un espectáculo separado que duró aproximadamente ¡3 minutos!

En muchos recursos encontré consejos para pasar a trabajar en acceso a terminal. Desafortunadamente, Windows 7 no le permite convertirse en un servidor de terminal utilizando herramientas estándar; hay un máximo de una conexión activa. En este caso, las sesiones restantes no terminan, puede volver a conectarse con otro usuario, "desechando" al usuario anterior, pero sin terminar su sesión. Por lo tanto, debe transferir 1C a un sistema operativo de servidor, donde no existen tales restricciones. El cliente, bajo su propia responsabilidad, resolvió el problema utilizando una utilidad de terceros. Windows7_SP1_RDPhack.

Pero las aventuras no terminaron ahí. Incluso en la conexión de la terminal hubo importantes retrasos. Una vez más los todopoderosos buscadores me ayudaron. A continuación se muestran algunos consejos para acelerar el archivo 1C, que seguí:

1. Desactivar uso del protocolo de red IPv6, configure el direccionamiento en el IPv4 “antiguo”.

2. Agregue procesos 1C a las excepciones del firewall de Windows, así como a las excepciones del antivirus, o deshabilítelos por completo (más arriesgado, pero una prueba simple lo demostró) aumento de velocidad retransferencia de documentos cuando el antivirus Avast está desactivado Factor de!)

3. Comience a indexar la búsqueda de texto completo en 1C o apáguela por completo

4. Ejecute Prueba y reparación de la base de datos, verificando con la utilidad ChDbfl.

5. Ejecute el elemento Comprobar configuración en la configuración (si la configuración no es estándar, esto puede resultar útil). Según los resultados de la verificación de la configuración, mágicamente disminuyó su tamaño en casi un tercio. Realmente no profundicé en lo que los programadores entrantes actualizaron antes que yo, pero el hecho es obvio.

6. Deshabilite las opciones funcionales innecesarias.

7. Configure los derechos de usuario. (Este y el consejo anterior me parecieron estúpidos hasta que observé la representación de formularios administrados al abrir una lista de documentos. Cuanto menos innecesario en una interfaz administrada, más rápido funciona, por regla general)

8. Comience a recalcular los totales y restablezca la secuencia (solo puede ocurrir un aumento significativo si los totales no se han restaurado durante mucho tiempo)

9. Especifique "Velocidad de conexión - baja" en la configuración de la lista de la base de datos (esto no dio mucho resultado, excepto que las imágenes de los subsistemas estaban desactivadas :))

Después de completar todos estos pasos, la base de datos del archivo 1C comenzó a funcionar mucho más rápido. Comenzó a ejecutarse en un máximo de 10 segundos y la velocidad de transferencia de documentos aumentó en promedio 12 veces.

Quizás este breve artículo le resulte útil si de repente necesita acelerar su base de datos de archivos 1C.

P.D: Pero ejecutar un archivo 1C usando el acceso de red a una carpeta compartida todavía no es realista, porque... Incluso la unidad de estado sólido, la RAM y el procesador más rápidos se bloquearán en la red y el trabajo de más de un usuario será prácticamente imposible. Hablamos concretamente de la configuración de UT 11.1. Las pequeñas configuraciones autoescritas pueden funcionar con bastante rapidez incluso en la versión de archivo.

Adiciones de comentarios para publicación:

Desfragmentador de disco con base de archivo

Circunvolución base de datos (puede ser útil si la base de datos es grande, por ejemplo, para varios años). La base de datos del cliente era bastante joven, por lo que la reducción no era práctica.

Actualización de hardware: disco duro más rápido, nuevo conmutador, procesador, etc.

Instalar en el servidor web, acceda mediante un cliente ligero. Aquí las opiniones están divididas. Algunos dicen que es muchas veces más rápido, otros dicen que no se nota ninguna aceleración.

Publicaciones sobre el tema.