Goulots d'étranglement de la base de données de fichiers - comment les éviter (d'après une expérience récente). Ralentissements basés sur les fichiers - comment éviter (d'après une expérience récente) La version basée sur les fichiers ralentit 1C 8.3 sur le réseau

2. Caractéristiques du programme. Souvent, même avec des paramètres optimaux, 1C fonctionne très lentement. Les performances diminuent particulièrement fortement lorsque le nombre d'utilisateurs travaillant simultanément avec la base de données dépasse 4 à 5 utilisateurs.

Qui es-tu dans l’entreprise ?

La solution au problème du fonctionnement lent du 1C dépend de qui vous êtes dans l'entreprise. Si vous êtes un passionné de technologie, continuez à lire. Si vous êtes directeur ou comptable, suivez le lien spécial ↓

Bande passante du réseau

En règle générale, non pas un, mais plusieurs utilisateurs travaillent avec une seule base d'informations (SI). Dans le même temps, il existe un échange constant de données entre l'ordinateur sur lequel le client 1C est installé et l'ordinateur sur lequel se trouve la sécurité des informations. Le volume de ces données est assez important. Il arrive souvent qu'un réseau local fonctionnant à une vitesse de 100 Mbit/s, qui est la vitesse la plus courante, ne puisse tout simplement pas faire face à la charge. Et encore une fois, l'utilisateur se plaint de la lenteur du programme.

Chacun de ces facteurs, individuellement, réduit déjà considérablement la vitesse du programme, mais le plus désagréable est que ces éléments s'additionnent généralement.

Examinons maintenant plusieurs solutions au problème de la faible vitesse 1C et de leur coût, en utilisant l'exemple d'un réseau local de 10 ordinateurs de taille moyenne.

Première solution. Modernisation des infrastructures

C'est peut-être la solution la plus évidente. Calculons son coût minimum.

Au minimum, pour chaque ordinateur, nous avons besoin d'une clé RAM de 2 Go, qui coûte en moyenne 1 500 roubles, une carte réseau prenant en charge une vitesse de 1 Gbit/s coûte environ 700 roubles. De plus, vous aurez besoin d'au moins 1 routeur prenant en charge une vitesse de 1 Gbit/s, ce qui coûtera environ 4 000 roubles. Coût total - 26 000 roubles pour l'équipement, hors travaux.

En principe, la vitesse peut augmenter considérablement, mais il n'est désormais plus possible d'acheter des ordinateurs bon marché pour le bureau. De plus, cette solution n'est pas applicable à ceux qui utilisent le Wi-Fi ou souhaitent travailler via Internet - dans leur cas, la vitesse du réseau peut être des dizaines de fois inférieure. La pensée se pose : « N'est-il pas possible de mettre en œuvre l'ensemble du programme sur un serveur puissant, afin que l'ordinateur de l'utilisateur ne participe pas à des calculs complexes, mais serve simplement au transfert d'images ? Vous pouvez alors travailler même sur des ordinateurs très faibles, même sur des réseaux à faible bande passante. Naturellement, de telles solutions existent.

Solution deux. Serveur Principal

Il a acquis une grande popularité à l'époque de 1C 7. Il est implémenté sur la version serveur de Windows et s'acquitte bien de notre tâche. Elle a cependant ses écueils, à savoir le coût des licences.

Le système d'exploitation lui-même coûtera environ 40 000 roubles. En plus de cela, nous aurons besoin pour tous ceux qui envisagent de travailler dans 1C d'une licence CAL Windows Server, coûtant environ 1 700 roubles, et d'une licence CAL Windows Remote Desktop Services, qui coûte environ 5 900 roubles.

Après avoir calculé le coût d'un réseau de 10 ordinateurs, nous obtenons 116 000 roubles. seulement pour une seule licence. Ajoutez à cela le coût du serveur lui-même (au moins 40 000 roubles) et le coût des travaux de mise en œuvre. Cependant, même sans cela, le prix des licences s'est avéré impressionnant.

Troisième solution. Service 1C Entreprise

1C a développé sa propre solution à ce problème, qui peut augmenter considérablement la vitesse du programme. Mais il y a ici aussi une nuance.

Le fait est que le coût d'une telle solution varie de 50 000 à 80 000 roubles, selon l'édition. Pour une entreprise comptant jusqu’à 15 utilisateurs, cela s’avère assez coûteux. De grands espoirs étaient placés dans le « mini-serveur d'entreprise 1C », qui, selon la société 1C, est destiné aux petites entreprises et coûte entre 10 000 et 15 000 roubles.

Cependant, lors de sa mise en vente, ce produit a été une grande déception. Le fait est que le nombre maximum d'utilisateurs avec lesquels le mini-serveur pouvait être utilisé n'était que de 5.

Comme l'a écrit un programmeur 1C sur le forum : « On ne sait toujours pas pourquoi 1C a choisi exactement 5 connexions ! Les problèmes commencent seulement avec 4 utilisateurs, mais avec cinq, tout se termine. Si vous souhaitez connecter une sixième personne, payez 50 000 supplémentaires. Nous pourrions faire au moins 10 connexions... "

Bien entendu, le mini-serveur a également trouvé son consommateur. Cependant, pour les entreprises où 5 personnes ou plus travaillent avec 1C, aucune solution simple et peu coûteuse n'est apparue.

En plus des méthodes d'accélération du programme décrites ci-dessus, il en existe une autre idéale pour le segment de 5 à 15 utilisateurs, à savoir l'accès Web pour 1C en mode fichier.

Solution quatre. Accès Web pour 1C en mode fichier

Le principe de fonctionnement est le suivant : un rôle supplémentaire de serveur Web est installé sur l'ordinateur sur lequel la sécurité des informations est publiée.

Naturellement, il doit s'agir soit de l'ordinateur le plus puissant du réseau, soit d'une machine distincte dédiée à ce rôle. Après cela, vous pouvez travailler avec 1C en mode serveur Web. Toutes les opérations lourdes seront effectuées côté serveur et le trafic transmis sur le réseau sera minimisé, tout comme la charge sur l'ordinateur du client.

Ainsi, même des machines très faibles peuvent être utilisées pour travailler en 1C, et la bande passante du réseau ne devient pas critique. Nos tests ont montré que vous pouvez travailler confortablement via Internet mobile sur une tablette bon marché sans ressentir de gêne.

Cette option est inférieure au serveur d'entreprise 1C en termes de vitesse de fonctionnement, mais cette différence est pratiquement invisible jusqu'à 15 à 20 utilisateurs. D'ailleurs, pour implémenter un serveur Web, vous pouvez utiliser IIS (pour Windows) et Apache (pour Linux) et ces deux solutions sont gratuites !

Malgré les avantages évidents, cette méthode d'optimisation du fonctionnement de 1C n'a pas gagné en popularité.

Je ne peux pas le dire avec certitude, mais cela est probablement dû à deux raisons :

  • Une description assez faible dans la documentation technique
  • Situé à l'intersection de la responsabilité de l'administrateur système et du programmeur 1C

Habituellement, lorsqu'un administrateur système est confronté à un problème de faible débit, il propose de mettre à niveau l'infrastructure ou un serveur de terminaux ; si un spécialiste 1C est contacté, on lui propose un serveur d'entreprise 1C. Ainsi, si dans votre entreprise un spécialiste responsable de l'infrastructure et un spécialiste responsable de 1C travaillent « main dans la main », alors vous pouvez utiliser en toute sécurité une solution basée sur un serveur web.

Accélérons 1C. À distance, rapidement et sans votre participation

Nous savons comment accélérer 1Ski sans perturber le client. Nous approfondissons le problème, faisons notre travail et partons. Si vous souhaitez que le programme fonctionne normalement, contactez-nous. Nous allons le découvrir.

Laissez une demande et recevez une consultation gratuite sur l’accélération du programme.

À bien des égards, l'optimisation 1C et la rapidité de travail dépendent de l'utilisation des verrous, des requêtes et des index. Nous essaierons de répondre à la question « comment accélérer le travail de 1C » (nous examinerons la question de savoir comment accélérer le lancement de 1C dans un autre article) et d'éviter les plaintes des utilisateurs concernant le « long traitement des documents », qui inévitablement affecte les processus commerciaux.

Partie 3. Performances 1C

Serrures en 1C 8.3 : recherche et élimination dans le code, transfert vers des serrures gérées

Les verrous font partie du mécanisme ACID. Considérons son concept, présenté sous forme de schéma simplifié, à l'aide de l'exemple de SQL SERVER

En mode automatique, les verrous sont gérés par le SGBD lui-même. Dans le même temps, des effets secondaires sont apparus sur le serveur MS SQL, tels que le verrouillage de tables vides et de plages de données de bordure (niveau sérialisable), ce qui a créé des problèmes supplémentaires dans le travail multi-utilisateurs. Pour résoudre ces problèmes, 1C a créé des verrous contrôlés.

1C Serrures contrôlées

Le mécanisme de verrouillage a été déplacé vers le serveur 1C et au niveau du SGBD, l'isolation a été réduite au minimum. Sur MS SQL, le niveau d'isolement a été abaissé à Read Comended avec un mécanisme de verrouillage partagé sur la plate-forme 8.2 et un mécanisme de gestion des versions de ligne sur la plate-forme 8.3 (appelé isolement de capture instantanée en lecture). Plus précisément, il s'agit de la propriété de base de données du même nom et de deux modes de fonctionnement Read Comended qui dépendent de ce paramètre.

Au dernier niveau d'isolation (RCSI), le mécanisme permettait de ne pas croiser les transactions de lecture et d'écriture sur les mêmes ressources sur le serveur SGBD. Tout le travail principal a été repris par le service de blocage 1C, qui détermine, sur la base des métadonnées natives, autoriser ou non les transactions vers le serveur SGBD, afin qu'il n'y ait pas de violations de la logique métier. Les problèmes de verrouillage des tables vides et des plages de bordure appartiennent au passé.

SGBD Type de verrouillage Niveau d'isolement des transactions Lire en dehors de la transaction
Serrures automatiques
Base de données de fichiers les tables Sérialisable Sale lecture
Serveur MS SQL Des postes Sale lecture
IBM DB2 Des postes Lecture répétable ou sérialisable Sale lecture
PostgreSQL les tables Sérialisable Lecture cohérente
Base de données Oracle les tables Sérialisable Lecture cohérente
Serrures gérées
Base de données de fichiers les tables Sérialisable Sale lecture
MS SQL Server 2000 Des postes Lecture validée Sale lecture
MS SQL Server 2005 et supérieur Lire un instantané validé Lecture cohérente
IBM DB2 avant la version 9.7 Des postes Lecture validée Sale lecture
IBM DB2 version 9.7 et versions ultérieures Des postes Lecture validée Lecture cohérente
PostgreSQL Des postes Lecture validée Lecture cohérente
Base de données Oracle Des postes Lecture validée Lecture cohérente

Afin de savoir dans quel mode de verrouillage se trouve la base de données du programme 1C, vous devez exécuter la requête suivante depuis SSMS dans le contexte de la base de données souhaitée :


Serrures 1C. L'utilisateur n'attendra pas les serrures, 1C accélérera si vous respectez certaines règles :

  • La durée des transactions doit être réduite autant que possible. Effectuer de longs calculs dans une transaction entraînera dans 100 % des cas un blocage lorsque vous travaillerez sur un système OLTP.
  • Les longues opérations externes au sein d'une transaction sont éliminées, par exemple l'envoi et la réception de confirmations par e-mail, l'utilisation du système de fichiers et d'autres actions supplémentaires. Toutes les opérations doivent être placées dans des tâches courtes différées.
  • Les requêtes sont optimisées au maximum.
  • Les index doivent être créés uniquement si nécessaire pour garantir des performances de requête optimales au sein de l'application.
  • Les inclusions de colonnes fréquemment mises à jour dans l'index clusterisé ont été minimisées. Les mises à jour d'une ou plusieurs colonnes de clé d'index cluster nécessitent un verrou à la fois sur l'index cluster et sur tous les index non cluster (car leur ligne de localisateur contient la clé d'index cluster).
  • Dans la mesure du possible, un index de couverture est créé et utilisé pour réduire le temps de récupération des données.
  • Utiliser le niveau d'isolation des transactions le plus bas, ce qui nécessitera le passage en mode de verrouillage géré.

Outils de diagnostic des blocages :

  • Revue technologique ;
  • Centre de gestion des performances à partir des outils 1C ;
  • Services cloud Gilev ;

Vous trouverez ci-dessous un exemple de surveillance du système à l'aide du service Gilev. La durée totale du blocage est d'environ 15 heures. Plus de 400 utilisateurs actifs. Après prise de décision et optimisation, les délais d'attente sont inférieurs à une minute et le nombre de blocages a été réduit d'environ 670 fois.

Était:



Devenu:


Dans une situation où « tout se bloque et prend beaucoup de temps » et où les services de surveillance ne sont pas configurés ou ne sont pas utilisés du tout, en vous rappelant le principe de Pareto, vous devez vous concentrer sur le code.

En mode automatique, la présence de verrous sur le serveur peut être détectée à l'aide d'une procédure système dans le cadre de la base de données souhaitée. Cette procédure stockée permet de déterminer dans quel mode fonctionnent les serrures, leur statut, leur type, etc. :



Après avoir finalisé la procédure pour 1C, vous pouvez obtenir des informations visuelles sur ce qui se passe actuellement sur le serveur, en tenant compte des spécificités des tables 1C :


Fragment 1

//Serrures en termes de 1C SELECT * FROM dbo.ReturnLockName1C(DEFAULT,DEFAULT) as t Where TableName1C IS NOT NULL ORDER BY t.Resource

L'utilisation de ce mécanisme permet d'obtenir des informations complètes sur les verrous en cours. Si le rapport contient uniquement des verrous S, le problème peut être dû à une ou plusieurs requêtes de longue durée. Pour établir la cause et le lieu de leur apparition dans le code, vous pouvez emprunter différentes voies : utiliser les objets DMO du serveur SQL (mais gardez à l'esprit que leurs données sont réinitialisées après le redémarrage du serveur) ou configurer le Data Collector, enregistrer les données de surveillance dans des tableaux pendant un certain temps. L'essentiel est d'obtenir les textes des demandes problématiques.

Utilisation des objets DMO SQL Server

Nous affichons la date de début du serveur pour comprendre la pertinence des données. Nous divisons le package en fonction de la note de lecture (physique, logique, charge du processeur). Dans ce cas, les données de base de sys.dm_exec_query_stats sont utilisées. Nous traduisons le texte de la demande en termes 1C. Si vous pouvez comprendre le contexte de l'appel à partir du texte de la demande, il ne reste plus qu'à examiner le plan de la demande, à trouver les opérateurs problématiques et à comprendre ce qui peut être fait.

Fragment 2

//heure de début SELECT sqlserver_start_time FROM sys.dm_os_sys_info ; //Principales demandes de lecture physique SELECT TOP (50) (total_physical_reads) AS Total_physical_reading,

Identifier les requêtes problématiques suite à la collecte du Data Collector

À l'aide de cet outil, vous pouvez classer les données en fonction des paramètres nécessaires, tels que la charge du processeur, la durée, les E/S logiques, les opérations de lecture physique, ce qui vous permet de sauvegarder des statistiques complètes pour une analyse plus approfondie, malgré le redémarrage du serveur SQL.


Une fois les demandes problématiques collectées par le serveur sans surveillance tierce, vous pouvez classer les données reçues en fonction des paramètres nécessaires.

Ensuite, en activant le journal technologique et en précisant dans les paramètres « recherche par chaîne » et la partie de la requête qui est garantie d'être rencontrée, vous pourrez savoir d'où la requête problématique a été appelée. Si le serveur dispose de plusieurs bases de données ou si le nom d'utilisateur est connu, il vaut la peine d'ajouter des champs supplémentaires pour le filtre afin de réduire la charge sur le serveur lors de la collecte du journal du processus.

Un exemple de demande problématique et un exemple de mise en place d'un log technologique :



L'optimisation des requêtes comme opportunité d'accélérer 1C 8.3


Les conséquences de requêtes sous-optimales peuvent se manifester sous la forme d'un traitement long des documents, d'une génération de rapports extrêmement longue, de blocages du système et d'autres événements désagréables.

Lorsque vous travaillez avec des requêtes, vous NE POUVEZ PAS :

  • Joignez des tables avec des sous-requêtes ;
  • Connectez des tables régulières avec des tables virtuelles ;
  • Utilisez le « OU » logique dans les conditions ;
  • Utiliser des sous-requêtes dans les conditions de jointure ;
  • Recevez des données via un point à partir de champs de type composite sans le mot-clé « Express ».

Lorsque vous travaillez avec des requêtes, VOUS POUVEZ :

  • Créer des index sur les conditions de requête, les champs de jointure, d'agrégation et de tri ;
  • Le filtrage des tables virtuelles doit être effectué à l'aide de paramètres de sélection.

Utilisation des index et leur impact sur la qualité des performances du système

De nombreux écrits ont été écrits sur les index, la nécessité de leur utilisation et leur impact sur la qualité du fonctionnement du système. Essayons de comprendre les subtilités de la « conception » des index, les options d'application et les avantages par rapport aux tables ordinaires.

L'indexation est une partie importante du noyau du SGBD. Des index manquants, ou inversement, un nombre excessif d'entre eux, affecter la vitesse de récupération, de modification, d’ajout et de suppression des données. Examinons l'indexation en utilisant l'exemple du SGBD Microsoft le plus courant.

Pour une compréhension générale de son fonctionnement, examinons les détails du mécanisme de stockage des données, que nous représentons habituellement sous la forme d'un tableau (par exemple, Excel).

L'unité de stockage physique des données est la page - un module de 8 Ko qui appartient à un seul objet (par exemple, une table ou un index). Une page est la plus petite unité de lecture et d’écriture. Les pages sont regroupées dans des extensions. Une étendue se compose de 8 pages consécutives. Les pages d'étendue peuvent appartenir à un ou plusieurs objets. Lorsque les pages appartiennent à plusieurs objets, l'étendue est dite « mixte ».

Son contenu peut être consulté ci-dessous :





Maintenant que nous avons une idée du fonctionnement d'une unité de stockage sur disque, parlons davantage des tables et des index.

Par défaut, si vous n'utilisez pas d'instructions T-SQL spéciales, la table vide est créée sous forme de « tas » - un simple ensemble de pages et d'étendues. Les données dans le tas n'ont pas d'ordre logique. Le moteur SQL Server assure le suivi de la propriété des pages et de l'étendue d'un objet spécifique à l'aide de pages système spéciales appelées cartes d'allocation d'index. Chaque table ou index possède au moins une page IAM, appelée « première page IAM ».


Ainsi, après avoir créé une table normale, le résultat par défaut est un arrangement chaotique de données. Vous pouvez afficher l'état de la table à l'aide de la procédure suivante :


Les principaux indices utilisés par la plateforme 1C

Fragment 3

Mythes et réalité :

Premier mythe : les index clusterisés et une table de données sont deux entités différentes, stockées séparément l'une de l'autre.

Deuxième mythe : il peut y avoir plusieurs index clusterisés dans une seule table.

J'ai téléchargé un programme pour optimiser le SGBD. Création d'index recommandés. La vitesse d'échantillonnage a augmenté de 50 %. La modification et l'ajout de données ont ralenti 7 fois.

Index clusterisé (clustérisé)

Les index clusterisés sont un ensemble de pages qui trient et stockent des lignes de données dans des tables ou des vues en fonction de leurs valeurs clés (les colonnes incluses dans la définition de l'index). Il existe une limitation sur ce type d'index de 16 colonnes et 900 octets. Pour chaque tableau il n'y a qu'un seul index clusterisé, car les lignes de données ne peuvent être triées que dans un seul ordre. La création d'un index clusterisé s'effectue en réorganisant la table plutôt qu'en copiant les données, ce qui permet de stocker la table sous forme d'arborescence équilibrée.

Fragment 4

SELECT NAME, TYPE, TYPE_DESC FROM sys.indexes WHERE object_id = OBJECT_ID("Trace Data")

Index non clusterisé

Les index non clusterisés ont une structure distincte des lignes de données. Un index non clusterisé contient les valeurs de la clé d'index clusterisé, et chaque enregistrement contient la clé d'index clusterisé (pas RID, puisque les tables 1C n'utilisent pas de tas, à de rares exceptions près).

Vous pouvez ajouter des colonnes non clés au niveau feuille d'un index non clusterisé et contourner la limite de clé d'index existante (900 octets et 16 colonnes clés) en exécutant des requêtes entièrement indexées.

Après avoir ajouté un index non clusterisé, les données ont été copiées et un autre objet est apparu :



Fragment 5

SELECT NAME, TYPE, TYPE_DESC FROM sys.indexes WHERE object_id = OBJECT_ID("Trace Data")

Schéma de l'index clusterisé après l'avoir récupéré du tas sous la forme d'un arbre équilibré :



Schéma d'un index non clusterisé dérivé d'une table clusterisée (notez que la colonne du localisateur de lignes a une clé d'index clusterisé) :



Impact des index sur les performances des requêtes

À l'aide d'un index, l'optimiseur de requête recherche les colonnes clés de l'index, trouve l'emplacement de stockage des lignes de requête et récupère les lignes correspondantes à partir de là. La recherche dans un index est beaucoup plus rapide que la recherche dans une table car, contrairement à une table, un index contient souvent moins de colonnes par ligne et les lignes sont triées dans l'ordre.

La création de plusieurs index entraîne une augmentation de la vitesse d'échantillonnage et une réduction significative de la vitesse d'écriture lors de la modification. Pour résoudre ce problème, vous devez tout d'abord supprimer les index inutiles ou les verrouiller d'abord sans les supprimer, ce qui vous permettra de les activer simplement si un tel besoin s'en fait sentir.

Veuillez noter qu'un index clusterisé ne peut en aucun cas être bloqué, car cela bloquera l'accès aux données de la table. Cela s'applique uniquement aux index que vous avez créés vous-même via T-SQL. La raison de la création d'index à l'aide de T-SQL, en contournant 1C:Enterprise, est associée, tout d'abord, aux capacités limitées de la plate-forme 1C en termes de manipulation des index et d'inclusion de champs supplémentaires dans l'index créé.

Instruction T-SQL qui effectue l'action de verrouillage d'un index :

//Verrouille un index séparé dans la table -ALTER INDEX _Reference22_ByPredefinedIDNotUniq ON _Reference22 DISABLE; //Inclure l'index souhaité -ALTER INDEX _Reference22_ByPredefinedIDNotUniq ON _Reference22 REBUILD;

En plus des étapes ci-dessus, il est important de créer un groupe de fichiers sur un disque physique qui ne contient pas les fichiers de base de données actuels et d'y déplacer les index non clusterisés. Cela accélérera la modification des données en parallélisant leur enregistrement.

Déterminer quels index sont nécessaires ou inutiles pour accélérer les requêtes

Par défaut, 1C crée un certain ensemble d'index de base. Souvent, il n’y en a tout simplement pas assez. SQL Server dispose de mécanismes qui vous permettent de comprendre, en fonction de votre charge de travail, la nécessité de vos index existants.

L'outil Database Engine Tuning Advisor analyse les bases de données et formule des recommandations pour optimiser les performances des requêtes. Il peut être utilisé pour sélectionner et créer des ensembles d'index optimaux sans avoir un niveau expert de compréhension de la conception de bases de données ou des processus internes de SQL Server. L'assistant de configuration du moteur de base de données vous permet d'effectuer les tâches suivantes :

  • Dépanner les performances d'une requête problématique spécifique ;
  • Configurez un grand nombre de requêtes dans une ou plusieurs bases de données.

DMO (objets de gestion dynamique), qui incluent des vues de gestion dynamique et des fonctions de gestion dynamique. Par exemple, une instruction T-SQL peut récupérer tous les index qui n'ont pas été utilisés depuis le dernier démarrage du serveur.



Fragment 6

AVEC vl as (SELECT OBJECT_NAME(I.object_id) AS nom d'objet, I.name AS nom d'index, I.index_id AS indexid FROM sys.indexes AS I INNER JOIN sys.objects AS O ON O.object_id = I.object_id OÙ I.object_id > 100 AND I.type_desc = "NONCLUSTERED" AND I.index_id NOT IN (SELECT S.index_id FROM sys.dm_db_index_usage_stats AS S WHERE S.object_id=I.object_id AND I.index_id=S.index_id AND database_id = DB_ID("Database_name '))) SELECT nom d'objet, T1.NameTable1C, indexid, nom d'index FROM vl OUTER APPLY dbo.ReturnTableName1C (nom d'objet) as T1 ORDER BY nom d'objet, nom d'index ;

Instructions pouvant être utilisées pour créer les index nécessaires recommandés par le noyau du SGBD :



Fragment 7

SELECT T1.NameTable1C comme Table_Name_1C, "CREATE INDEX " + " ON "
L'optimiseur de requêtes, lors de la génération du plan d'exécution de la requête, identifie la nécessité de créer l'index manquant. Il stocke ces informations dans XML ShowPlan. Parce que les plans de requête sont hachés et les instructions sont enregistrées (jusqu'au prochain redémarrage du serveur), puis elles peuvent être récupérées, traitées et des instructions prêtes à l'emploi pour créer les index nécessaires à tout plan d'exécution dans le cache sont obtenues. Il convient de prêter attention à la fréquence d'exécution des requêtes : plus elle est élevée, plus les résultats de la requête et, par conséquent, les indicateurs collectés sont pertinents. Si la requête a été exécutée une seule fois, ses résultats ne sont pas aussi indicatifs.


Fragment 8

CROSS APPLY query_plan.nodes('//StmtSimple") AS stmt(stmt_xml) WHERE stmt_xml.exist("QueryPlan/Missinglndexes") = 1) SELECT TOP 30 DatabaseName comme Database_Name, TableName comme Table_Name, T1.NameTable1C comme Table_Name 1C, Egalité_colum ns comme Comparison_columns, include_columns comme Columns_to_include,

Fragment 9

UTILISER [Database_name] GO CRÉER UN INDEX NON CLUSTERED SUR .[_Document497] ([_Fld12771_TYPE],[_Fld12771_RTRef]) INCLURE ([_Date_Time],[_Fld12771_RRRef],[_Fld12782RRef],[_Fld12784]) GO Quelques fonctionnalités d'indexation par champs agrégés et champs de tri.

La création d'un index sur les colonnes spécifiées dans la clause ORDER BY aide l'optimiseur de requêtes à organiser rapidement l'ensemble de résultats car les valeurs des colonnes sont triées à l'avance dans l'index. L'implémentation interne du mécanisme GROUP BY trie également d'abord les valeurs des colonnes pour regrouper rapidement les données requises.

Lorsque vous utilisez des recommandations standard, il convient de vérifier le résultat avant et après l'optimisation. Donnons un exemple d'utilisation de l'union logique « OU » et de son alternative (pour résoudre le problème à l'aide des recommandations standard) - la technique de modification d'une requête à l'aide de la syntaxe « UNITE ALL ».

La requête 1C elle-même avec « OU » :

SELECT Code, Nom, Lien FROM Répertoire. Contreparties AS Contreparties OÙ Contreparties. Code = "000000004" OU Contreparties. Code = "0074853" OU Contreparties. Code = "000000024" OU Contreparties. Code = "009679294" OU Contreparties. Code = " 0074742" OU Contreparties.Code = "000000104" ;

Modification de la requête avec « UNITE ALL » :

SELECT Code, Nom, Lien FROM Répertoire. Contreparties AS Contreparties OÙ Contreparties. Code = "000000004" COMBINEZ TOUS SELECT Code, Nom, Lien FROM Répertoire. Contreparties AS Contreparties OÙ Contreparties. Code = "0074853" COMBINEZ TOUS SELECT Code, Nom, Lien FROM Répertoire.Contreparties AS Contreparties OÙ Contreparties.Code = "000000024" COMBINEZ TOUT SELECT Code, Nom, Lien FROM Répertoire.Contreparties COMME Contreparties OÙ

Plan de requête réel (pour faciliter l'affichage et la comparaison des performances, requêtes interceptées et exécutées dans SSMS) :


Dans ce cas, après optimisation, les performances ont chuté de moitié en raison de l'utilisation répétée de l'opérateur Key Lookup, qui est toujours accompagné de l'opérateur Nested Loops. Par conséquent, lorsque vous utilisez un schéma d’optimisation des requêtes, vous devez mesurer le temps cible avant et après l’utilisation des améliorations. Cet exemple est présenté dans le but de « faire confiance mais vérifier », car il peut y avoir une incohérence entre les recommandations typiques et les problèmes pratiques.

Comment accélérer le travail dans 1C : Comptabilité 8.3 (édition 3.0) ou désactiver les tâches de routine et d'arrière-plan

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

Ceux d'entre vous qui sont déjà passés à la nouvelle édition de 1C : Comptabilité 8.3 (édition 3.0) ont remarqué qu'elle est devenue plus lente que la 2. Quelques ralentissements étranges, des tâches en arrière-plan interminables plusieurs fois par jour, que personne ne lui a demandé d'effectuer à notre insu.

Mes comptables m'ont dit immédiatement après la transition que la nouvelle édition de 1C : Comptabilité 3.0 est carrément lente par rapport aux précédentes ! Et il est tout simplement impossible de travailler.

J'ai commencé à m'y intéresser et j'ai très vite découvert que la principale cause des blocages et du mécontentement ultérieur des utilisateurs sont les tâches de routine et d'arrière-plan, dont beaucoup sont activées par défaut, bien que pour la grande majorité des comptables, elles n'en aient pas besoin.

Eh bien, par exemple, pourquoi devons-nous exécuter la tâche « Extraction de texte » cent fois par jour si nous n'effectuons pas une recherche en texte intégral (comptables, ne vous inquiétez pas) dans tous les objets de notre base de données.

Ou pourquoi télécharger constamment les taux de change si nous n'effectuons pas de transactions en devises ou si nous les effectuons occasionnellement (et avant cela, nous pouvons nous-mêmes cliquer sur le bouton de téléchargement des taux).

Il en va de même pour la tentative constante de 1C de se connecter au site et de vérifier et mettre à jour les classificateurs bancaires. Pour quoi? J'appuierai moi-même sur le bouton pour mettre à jour les classificateurs si je ne trouve pas la bonne banque par son BIC.

Comment procéder étape par étape ci-dessous.

1. Allez dans la rubrique « Administration » et sélectionnez « Maintenance » () dans le panneau d'action :

2. Dans la fenêtre qui s'ouvre, recherchez et sélectionnez « Tâches de routine et en arrière-plan » :

3. Ouvrez chaque tâche comportant « On » dans la colonne « On ». il y a un jour.

4. Décochez « Activé » et cliquez sur le bouton « Enregistrer et fermer ».

5. Faites cela avec chacune des tâches incluses et profitez de la nouvelle édition. Dans l’ensemble, à mon avis, c’est bien mieux que deux.

Dans le même temps, la plateforme permettra toujours certaines des tâches planifiées que vous avez désactivées.

Le système 1C est aujourd'hui l'un des principaux outils de gestion des petites et moyennes entreprises. En règle générale, tous les employés de l'organisation ont accès au programme. Ainsi, si 1C commence à ralentir ou à fonctionner lentement, cela affecte considérablement la conduite des affaires. Voyons comment vous pouvez accélérer et optimiser vous-même le travail dans 1C.


Optimisation à l'aide de la mise à jour 1C

Les nouvelles versions de 1C fonctionnent toujours avec plus de succès et de rapidité, il est donc impératif de suivre les mises à jour. Il est recommandé de mettre à jour vos registres comptables aussi souvent que possible. Surtout lorsque des versions de reporting réglementé sont publiées.

De nombreuses personnes utilisent depuis longtemps la possibilité de mettre à jour automatiquement le programme. Bien que ce problème puisse être facilement résolu manuellement pour 1C Enterprise 8.3, la mise à jour ne posera aucun problème.

La première étape consiste à télécharger la dernière version de la plateforme que vous utilisez actuellement. Cela se fait soit à l'aide du disque ITS, soit via l'interface Web, où ils fournissent une assistance continue aux utilisateurs d'un programme tel que 1c Enterprise 8.3, dont une mise à jour de configuration est également fournie officiellement.

Dans ce dernier cas, l'archive contenant les données de mise à jour est téléchargée séparément. Il est décompressé dans n'importe quel dossier considéré comme le plus pratique pour l'utilisateur. Ensuite, vous devez exécuter le fichier .exe. Dans la fenêtre suivante, cliquez simplement sur le bouton « Suivant ».

Une autre page apparaîtra. Sur celui-ci, l'utilisateur sélectionne le chemin dans lequel l'installation est terminée. Mais cette étape n'est recommandée qu'aux propriétaires avancés d'ordinateurs personnels. Les fonctions par défaut suffisent généralement à résoudre la plupart des problèmes. Par défaut, dans ce cas, un dossier est spécifié dans lequel toutes les mises à jour sont installées en même temps. C'est beaucoup plus pratique que lorsque les chemins finaux sont différents. On clique simplement plusieurs fois sur les boutons « Suivant » dans le programme 1c Enterprise 8.3 dont la configuration devrait être mise à jour rapidement.

Il ne reste plus que le dernier bouton, qui propose « Installer ».

Comment accélérer 1C si la plateforme est lente

Les problèmes résultent le plus souvent du fait qu’à l’une des étapes, la concentration de l’attention de l’interprète diminue. Ici, il est important de choisir le bon schéma de mise à jour, mais dans ce cas, nous ne rencontrerons pas de problème lorsque 1c se bloque pendant la mise à jour.

Mise à jour version 7.7

Il existe plusieurs types de configuration. En fonction de cela, le déroulement des actions ultérieures est choisi.

  • Standard – dans ce cas, on suppose que la mise à jour est également effectuée pour le reporting réglementé.
  • Les configurations industrielles typiques rappellent largement les options précédentes. Il est important de lire au préalable les instructions fournies par le développeur. Sinon, vous ne pourrez pas comprendre pourquoi 1C 8.3 plante lors de la mise à jour.
  • Norme modifiée - l'utilisateur a toujours la possibilité de modifier lui-même l'application afin qu'elle réponde aux besoins actuels. Une autre option pour étendre les fonctionnalités consiste à migrer vers de nouvelles plates-formes. Par exemple, la version 8.

À propos des versions 8.0 et 8.1

Actuellement, la plate-forme 8.0 est déjà retirée du support. Les nouveaux développements standards ne fonctionneront qu’avec l’utilisation des dernières versions. N'oubliez pas que toutes les versions intermédiaires sont terminées sans faute. Sinon, il existe une forte probabilité de simplement perdre des informations. Ou rencontrez une situation où 1c se bloque lors de la mise à jour de la configuration.

Une option est possible lorsqu'une nouvelle configuration standard est mise en œuvre, puis les restes des anciennes bases de données d'informations y sont transférés.

Quant à la version 8.1, vous pouvez la mettre à jour de plusieurs manières :

  1. manuellement;
  2. en mode automatique ;
  3. contacter des spécialistes d'entreprises fournissant des services dans ce domaine.

Travailler avec des versions non standard ou modifiées

Dans un premier temps, toute configuration fait référence à des développements standards. Cela cesse de l'être si certains changements sont apportés dans l'entreprise. Par exemple, lors de l'installation. Parmi les configurations non standard, deux classes se distinguent :

  1. modifié;
  2. créé à partir de zéro, en tenant compte des besoins d'une entreprise spécifique.

Parfois, une configuration de seconde classe est activement distribuée entre les utilisateurs. Ensuite, cela est considéré comme typique. C'est juste que le fabricant n'est pas considéré comme 1C lui-même, mais comme l'entreprise qui a créé la nouvelle version.

Les configurations peuvent être maintenues à jour par les actions suivantes :

  • Correction des erreurs.
  • Extension des fonctionnalités.
  • Amélioration.
  • Changement dans 1C 8.3, la configuration n'est pas mise à jour en cas d'erreurs de maintenance.

Le processus d'installation peut prendre des temps différents en fonction de la vitesse Internet à laquelle vous l'utilisez actuellement. Dans une fenêtre séparée, l'utilisateur choisit s'il souhaite mettre à jour une fois le travail terminé ou immédiatement. Avec cette dernière option, vous devez vous assurer que personne d'autre ne travaille avec l'application. Le processus lui-même implique l'utilisation du mode exclusif au sein de l'application 1c Enterprise 8.3, la dernière mise à jour ne fait pas exception.

  • Nous devons nous rappeler que toutes les versions peuvent ne pas être adaptées à la configuration actuelle.
  • Si les mises à jour n'ont pas été effectuées depuis longtemps, vous devrez peut-être télécharger plusieurs fichiers ou archives à la fois.
  • Dans la liste, il est facile de comprendre quelle version de 1C Enterprise 8.3 est nécessaire, la mise à jour est sélectionnée par l'utilisateur.

Une fois le processus terminé, le configurateur lui-même peut être fermé. Ce mode est le plus souvent utilisé si une mise à jour est nécessaire. C’est pratique et automatise presque tout le processus. Lorsque vous le lancez pour la première fois, un message peut apparaître indiquant que la plateforme est obsolète. Et qu’il n’est pas recommandé de l’utiliser pour le moment.

Raisons supplémentaires de freinage

Si le programme est mis à jour correctement et sans aucune erreur, cependant, 1C ralentit toujours, la raison peut être la suivante :

  • Antivirus - s'il est configuré correctement, aucun antivirus n'interférera avec le système. Cependant, si vous utilisez les paramètres d'usine, les performances de 1C peuvent diminuer de 5 à 10 %. Vous pouvez optimiser votre antivirus à l'aide de paramètres supplémentaires en supprimant le mode arrière-plan (si cela est absolument nécessaire).
  • Paramètres informatiques - des ordinateurs souvent insuffisamment puissants entraînent une diminution significative des performances 1C. Une attention particulière doit être portée à la carte vidéo, au système d'exploitation et au processeur.

De telles méthodes optimiseront et accéléreront considérablement le travail dans 1C pour toute entreprise ou entreprise, après quoi les performances du programme augmenteront considérablement.

Comment augmenter la vitesse et la facilité d'utilisation dans 1C

Symptômes et antécédents du patient :

Le travail de plusieurs utilisateurs sur le réseau avec le même fichier (base de données) inclut un mécanisme de blocage du réseau. Cela oblige le système à perdre un temps précieux à identifier les sessions d'enregistrement ouvertes et à résoudre les conflits en conséquence.

Les principaux signes d'un fonctionnement bloquant :

  • travail rapide de l'utilisateur avec la base de données sur le réseau en mode exclusif et extrêmement lent lorsque plusieurs utilisateurs travaillent simultanément
  • expérience utilisateur rapide avec une base de données locale sur le serveur et travail lent sur le réseau
  • les accès au système de fichiers sont légèrement inférieurs à 10 Mo/s

On m'a donc confié la tâche de m'assurer que jusqu'à trois utilisateurs puissent travailler dans 1C en même temps ! C'est drôle, n'est-ce pas ?

J'ai oublié toutes les blagues quand j'ai vu à quoi j'avais affaire : un « serveur » sous la forme d'un ordinateur de bureau ordinaire et de deux ordinateurs portables.

Le bonheur serait incomplet sans les merveilleux systèmes d'exploitation - Windows 7 sur l'ordinateur et sur un ordinateur portable, Windows 8 sur l'autre.

En essayant de publier simultanément des documents sur des ordinateurs portables, l'un est resté bloqué pendant environ une minute et le second est sorti de 1C avec le texte d'erreur « Impossible de verrouiller la table... ».

Lancer 1C sur un ordinateur portable est une émission distincte qui a duré environ 3 minutes!

Sur de nombreuses ressources, j'ai trouvé des conseils pour passer à travailler dans l'accès aux terminaux. Malheureusement, Windows 7 ne vous permet pas de vous transformer en serveur de terminaux à l'aide d'outils standard - il existe au maximum une connexion active. Dans ce cas, les sessions restantes ne se terminent pas, vous pouvez vous reconnecter sous un autre utilisateur - en « rejetant » l'utilisateur précédent, mais sans mettre fin à sa session. Par conséquent, vous devez transférer 1C vers un système d'exploitation serveur, où de telles restrictions n'existent pas. Le client, à ses propres risques, a résolu le problème en utilisant un utilitaire tiers. Windows7_SP1_RDPhack.

Mais les aventures ne s'arrêtent pas là. Même dans la connexion au terminal, il y a eu des retards importants. Une fois de plus, les tout-puissants moteurs de recherche m’ont aidé. Vous trouverez ci-dessous des conseils pour accélérer le fichier 1C, que j'ai suivis :

1. Désactiver utilisation du protocole réseau IPv6, configurez l’adressage sur « l’ancien » IPv4.

2. Ajoutez les processus 1C aux exceptions du pare-feu Windows, ainsi qu'aux exceptions antivirus, ou désactivez-les complètement (plus risqué, mais un simple test a montré augmentation de la vitesse retransfert de documents lorsque l'antivirus Avast est désactivé facteur de!)

3. Commencez à indexer la recherche en texte intégral dans 1C ou désactivez-la complètement

4. Exécutez Test et réparation de la base de données, en vérifiant avec l'utilitaire ChDbfl

5. Exécutez l'élément Vérifier la configuration dans la configuration (si la configuration n'est pas standard, cela peut être utile). Sur la base des résultats de la vérification de la configuration, sa taille a comme par magie diminué de près d'un tiers. Je n’ai pas vraiment approfondi ce que les nouveaux programmeurs ont mis à jour avant moi, mais le fait est évident.

6. Désactivez les options fonctionnelles inutiles.

7. Configurez les droits des utilisateurs. (Ce conseil et les précédents semblaient stupides jusqu'à ce que j'observe le rendu des formulaires gérés lors de l'ouverture d'une liste de documents. Moins il y a d'inutile dans une interface gérée, plus cela fonctionne vite, en règle générale)

8. Commencez à recalculer les totaux et à restaurer la séquence (une augmentation significative ne peut se produire que si les totaux n'ont pas été restaurés depuis longtemps)

9. Spécifiez "Vitesse de connexion - faible" dans les paramètres de la liste de la base de données (cela n'a pas donné beaucoup de résultat, sauf que les images des sous-systèmes ont été désactivées :))

Après avoir terminé toutes ces étapes, la base de données de fichiers 1C a commencé à fonctionner beaucoup plus rapidement. Le lancement a commencé en 10 secondes maximum et la vitesse de transfert des documents a été multipliée par 12 en moyenne.

Peut-être que ce court article vous sera utile si vous avez soudainement besoin d'accélérer votre base de données de fichiers 1C.

P.S : Mais lancer un fichier 1C en utilisant l'accès réseau à un dossier partagé est toujours irréaliste, car... Même le disque SSD, la RAM et le processeur les plus rapides se heurteront à des blocages de réseau et le travail de plusieurs utilisateurs sera pratiquement impossible. Nous parlons spécifiquement de la configuration de UT 11.1. Les petites configurations auto-écrites peuvent fonctionner assez rapidement même dans la version fichier.

Ajouts à partir des commentaires pour publication :

Défragmenteur de disque avec base de fichiers

Convolution base de données (peut être utile si la base de données est volumineuse, par exemple pendant plusieurs années). La base de données du client était assez jeune, donc la réduction n'était pas pratique.

Mise à niveau matérielle : disque dur plus rapide, nouveau commutateur, processeur, etc.

Installer sur le serveur Web, accès à l'aide d'un client léger. Ici, les avis sont partagés. Certains disent que c'est plusieurs fois plus rapide, d'autres disent qu'aucune accélération n'est constatée.

Publications sur le sujet