Meine IBM DB2 Express-C-Verwaltungserfahrung bei Verwendung mit 1C: Enterprise

Ich hatte die Möglichkeit, mit IBM DB2 zu arbeiten. Sowohl auf 1C als auch auf dem Server auf Django wurde dieses DBMS gleichzeitig verwendet. Es verarbeitete OLAP-Anforderungen recht schnell (obwohl es notwendig war, die Indizes und natürlich den Webserver manuell zu konfigurieren, damit die Antwort innerhalb von 2 Sekunden erfolgte). 2015 habe ich diese kleine Anleitung für mich vorbereitet, um sie nicht zu vergessen. Und als Ergänzung zum Lebenslauf, vielleicht jemand, der auf Papier las, lagen die verbleibenden Jahre der Arbeit im Leerlauf. Einige Verallgemeinerungen meiner Erfahrungen mit DB2. Ich habe es ein wenig korrigiert und schlage vor, es hier zu lesen, um meinen Horizont zu erweitern. Vielleicht wird jemand interessiert sein. Ich muss sofort sagen, dass ich seitdem nicht mehr mit DB2 gearbeitet habe, alles vergessen wurde, aber ich erinnere mich noch an etwas. Kritik und Klarstellungen sind willkommen, aber da ich nicht mehr arbeite, vielleicht nicht für mich, sondern für jemand anderen, werden sie nützlich sein.

Im Internet finden Sie viele Anweisungen zum Organisieren der Arbeit von 1C: Enterprise mit IBM DB2 DBMS. Für den Anfang ist dies überhaupt nicht schlecht, aber nicht genug für den Einsatz in der Produktion. Ich habe zuvor empfohlen, mit IBM DB2 mit dem Schulungskurs DB101RU der Big Data University zu beginnen. Ich selbst habe diesen Kurs belegt und die Prüfung 2012 bestanden. Ich finde ihn sehr nützlich. Schade, dass die Ressource nicht mehr existiert. Auf der neuen Plattform habe ich so etwas nicht gefunden. In der Produktion erfordert IBM DB2 zusätzliche Konfiguration und Wartung, von denen die wichtigsten hier kurz beschrieben werden. Wir erwägen eine kostenlose Version von IBM DB2 Express-C für Windows 10.1fp2 und 10.5fp4 (die erste wird von 1C für das Arbeiten im Testmodus unterstützt, die zweite wird offiziell unterstützt, es ist schade, dass neuere Versionen nur bezahlt werden). Es ist sinnvoll, 64-Bit 10.5 zu installieren, wenn hohe Anforderungen an RAM (Puffergröße für Geschwindigkeit) oder Aufzeichnungsgröße (EXTENDED_ROW_SZ = ENABLE) gestellt werden, wenn zusammengesetzte Typen verwendet werden, die lange Zeichenfolgen fester Größe enthalten.

Das allererste, was getan werden sollte, ist die Verwendung archivierter Journale, um Backups zu erstellen, ohne den Betrieb von 1C: Enterprise zu unterbrechen, und um die Datenbank jederzeit wiederherstellen zu können (die Wiederherstellung auf 10.1fp2 hat aufgrund einer nicht korrigierten Funktion ihre eigenen Besonderheiten Fehler in der kostenlosen Version - manuelles Verschieben von Protokolldateien erforderlich). Im Gegensatz zu MS SQL wird die Archivierung von Protokollen nicht zu bestimmten vorgegebenen Zeitpunkten durchgeführt (in MS SQL ist sie nicht stark, möglicherweise gibt es noch etwas anderes). Wenn die Protokolldatei eine bestimmte, vorgegebene Größe erreicht, muss das Protokoll vor dem Wiederherstellungsvorgang nicht gesichert werden. Deaktivieren Sie einfach die Basis. Das Archivieren von Protokollen in zwei Richtungen ist einfach zu konfigurieren, von denen sich eines beispielsweise auf einem Netzwerklaufwerk befindet. Darüber hinaus ist bei kurzen Netzwerkausfällen die Zunahme des von aktiven Zeitschriften belegten Platzes nicht signifikant. Für aktive Protokolle müssen Sie genügend freien Speicherplatz bereitstellen, um die Datenbank jederzeit wiederherstellen zu können. Wenn während der Arbeit des Programmierers mit der 1C-Basis zu verschiedenen Zeitpunkten häufige Rückgaben erforderlich sind, eine Sicherung zur Wiederherstellung ausreicht, ist die Auswahl der Protokolldateien für die Wiederherstellung sehr einfach. Stellen Sie sicher, dass Sie die Datenbank zu Beginn der Instanz aktivieren, da wir sonst eine große Anzahl kleiner Protokolldateien mit impliziter Aktivierung erhalten. Natürlich sollten Sie die Speicherzeit für die Sicherung festlegen (meiner Meinung nach müssen Sie die Protokolle mindestens zwei Monate lang speichern) und die automatische Löschung konfigurieren. Die Basis und die Sicherungen (Protokolle) müssen sich auf verschiedenen physischen Festplatten befinden. In extremen Fällen können Sie Sicherungen auf einem anderen Computer im lokalen Netzwerk durchführen.

Die Basisaktivierung ist auch aus einem anderen Grund erforderlich. Für den normalen Betrieb sollten Sie die Windows-Online- und Offline-Wartung installieren. Zu diesem Zeitpunkt sollte die Basis aktiv sein. In regelmäßigen Abständen sollten Sie den Verlauf der Datenbank überprüfen, um herauszufinden, welche Aktionen während des Offline-Fensters ausgeführt wurden. Das Offline-Wartungsfenster sollte höchstwahrscheinlich zwischen 22:00 und 0:00 Uhr eingestellt werden, da derzeit keine schweren 1C-Wartungsaufgaben ausgeführt werden. Vielleicht reicht für kleine Basen ein Fenster von 1 Stunde.

In regelmäßigen Abständen müssen Sie im manuellen Modus prüfen, ob eine Reorganisation erforderlich ist, und nach Analyse des Status der Tabellen und Indizes eine Reorganisation einzelner Objekte durchführen. Die manuelle Reorganisation von mehreren tausend Tabellen und Indizes kann lange dauern. Die Analyse kann leicht durch einen einfachen Filter (z. B. auf .js) unter Verwendung von regulärem Ausdruck beschleunigt werden.

AUTOCONFIGURE muss natürlich regelmäßig durchgeführt werden, wobei einzelne Einstellungen manuell korrigiert werden, z. B. die Größe Ihrer eigenen Protokolldatei.

Nach einem Tag ist es möglich und häufiger, eine Online-Sicherung der Datenbank durchzuführen (erfordert kein Herunterfahren und das Vorhandensein eines DBA). Die Häufigkeit hängt von der erforderlichen Wiederherstellungszeit ab, die wiederum von der Anzahl der Archivprotokolldateien nach der letzten Sicherung abhängt, dh von der Belastung der Datenbank. Für mittlere, große und stark ausgelastete Datenbanken ist es sinnvoll, verschiedene Arten von inkrementellen Sicherungen zu verwenden, um den für Sicherungen belegten Speicherplatz und die Wiederherstellungszeit für Sicherungen zu verringern. Überprüfen Sie nach jeder Sicherung und vor der Wiederherstellung den Zustand der Sicherungen. Die Sicherungsspeicherzeit liegt im Ermessen des DBA, jedoch nicht unter der Speicherzeit der Protokolle.

Führen Sie mindestens einmal im Monat Offline- und Online-Datenbankzustandsprüfungen durch (im Offline-Modus wird die Arbeit mit der Datenbank für einige Minuten unterbrochen) und führen Sie gegebenenfalls Reparaturen durch (am wichtigsten für „Server“ ohne USV). Führen Sie monatlich eine Offline-Sicherung der Datenbank durch. Es werden nur lange Zeit Offline-Sicherungen gespeichert, da beim Ändern der DB2-Version keine Online-Sicherung bereitgestellt werden kann. Wenn „1C: Enterprise“ nicht einmal eine kurzfristige Offline-Übersetzung der Datenbank zur Überprüfung oder Sicherung zulässt, können die angegebenen Aktionen in einer erweiterten Kopie der Datenbank ausgeführt werden. Die Datenbank wird problemlos von der Sicherung an einem anderen Speicherort wiederhergestellt, z. B. auf einer anderen Festplatte auf einem anderen Server. Es ist zu beachten, dass sowohl Sicherungen als auch archivierte Protokolle mit DB2-Tools komprimiert werden können (in diesem Fall bleibt das Tool zur Überprüfung der Sicherung funktionsfähig und das Tool zur Überprüfung archivierter Protokolle funktioniert nicht).

Bevor Sie die Datenbank und die Offline-Sicherung offline überprüfen, sollten Sie festlegen, dass die Datenbank und die geplanten Aufgaben gesperrt werden. Im Notfall können Sie die Datenbank stabilisieren. Da jedoch der Benutzer, unter dem der 1C: Enterprise-Server ausgeführt wird, in der Gruppe SYSADM_GROUP enthalten ist, wird die Möglichkeit, 1C zum falschen Zeitpunkt mit der Datenbank zu verbinden, nicht aufgehoben, und daher ist eine Sekunde erforderlich Jobstart.

Wenn die Datenbank nicht schnell funktioniert, sollten Sie nach dem Aktualisieren der Statistiken die schwerwiegendsten Abfragepläne abrufen, mit Indizes in 1C in einer Kopie der Datenbank experimentieren und Änderungen am Abfrageplan in IBM Data Studio nachverfolgen (in diesem Fall ist die Verwendung von Eclipse gerechtfertigt, in anderen Fällen reicht dies für die Befehlsschnittstelle aus Zeilen) oder verwenden Sie die Empfehlungen des DB2 Design Advisor und erstellen Sie bei Bedarf manuell Indizes außerhalb von 1C. Beginnen Sie gleichzeitig mit der Erfassung detaillierter Leistungsinformationen mithilfe von DB2-Tools (mehr als ein Dutzend SQL-Skripts) und analysieren Sie die Last mit dem Systemmonitor. Um die Belastung des Festplattensystems zu verringern, muss die Datenbank auf einer separaten Hochgeschwindigkeitsfestplatte mit ausreichender Größe installiert werden (es sei denn, natürlich ist ein normales RAID 10-Server-Festplattenarray verfügbar). Es ist möglich, aktive Protokolle zusammen mit dem Betriebssystem auf der SSD abzulegen. Möglicherweise müssen Sie auch den Speicherort des Tempos des 1C: Enterprise-Servers ändern. Wenn der Kauf einer Festplatte nur geplant ist, ist es für kleine Organisationen zulässig, vorübergehend eine einzelne physische Festplatte für die Datenbank zu verwenden.

Überprüfen Sie db2diag.log täglich auf Fehler sowie die Ergebnisse von Aktionen mit der Datenbank. Archivieren Sie bei Erreichen einer Größe von mehreren zehn Megabyte. Far Manager kann eine bequeme Möglichkeit sein, das Protokoll anzuzeigen (es wird davon ausgegangen, dass nur wenige Fehler in der Datenbank vorhanden sind). Es ist auch hilfreich, wenn Sie Archivprotokolle manuell verschieben müssen, um sie zu einem bestimmten Zeitpunkt wiederherzustellen.

Einer der Wettbewerbsvorteile von IBM DB2 kann meines Erachtens darin gesehen werden, dass IBM DB2 in Fällen, in denen MS SQL Server für den normalen Betrieb einen 64-Bit-1C: Enterprise-Server benötigt, 32-Bit verwenden kann.

UPD: Vielleicht war er nicht vorsichtig, als er die von 1C: Enterprise unterstützten DB2-Versionen vor der Veröffentlichung überprüfte. Im Original dieses Textes von 2015, ungefähr 10.5fp4, wurde gesagt: Bei Verwendung mit 1C: Enterprise wurden "noch keine Fehler festgestellt". Das heißt, im Moment ist beim neuen Express-C nur 10.1 möglich (mit seinen Funktionen und Einschränkungen). Von den heute bezahlten wird nur 11.1 offiziell unterstützt. Es ist möglich, dass jemand genug Developer-C mit einer Datenbankgröße von bis zu 100 GB hat. Ich habe den Link zur Dokumentation nicht geändert - es ist einfach, dorthin zu wechseln.

UPD: Ich habe alles noch einmal gelesen, wahrscheinlich sollte es jemandem klar sein, der sich mit DB2 befasst hat, aber vielleicht ist eine Klarstellung für diejenigen erforderlich, die noch nicht mit diesem DBMS vertraut sind
sollte die Geschichte der Basis anzeigen
sollte auch hierher bringen
Führen Sie Offline- und Online-Datenbankzustandsprüfungen durch
hier , hier und hier , aber im letzteren Fall kann es bereits erforderlich sein
eine solche Batch-Datei
@echo off
setlocal
db2 list applications for db %1 && exit /b
set active=no
db2 list active databases | findstr /i /r "=\ %1$" >nul && set active=yes
if %active%==yes db2 deactivate db %1 || (db2 activate db %1 & exit /b)
db2 CONNECT TO %1
db2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
db2 CONNECT RESET
::db2set DB2_DIRECT_IO=OFF
db2dart %1 /RPT . /ERR E
::db2set DB2_DIRECT_IO=
db2 CONNECT TO %1
db2 UNQUIESCE DATABASE
db2 CONNECT RESET
if %active%==yes db2 activate db %1


Und hier ist das
Die Analyse kann leicht durch einen einfachen Filter (z. B. auf .js) unter Verwendung von regulärem Ausdruck beschleunigt werden.
kann Schwierigkeiten verursachen, ich bin nicht sicher, ob jemand dies tut, verlässt sich auf Automatisierung, das Maximum ist auf diese Abfrage beschränkt: db2 "SELECT substr(TABSCHEMA,1,20), substr(TABNAME,1,20) FROM SYSIBMADM.ADMINTABINFO WHERE REORG_PENDING = 'Y'" Allerdings
Es ist einfach, die benötigten Informationen zu erhalten
Führen Sie dazu zuerst den Befehl db2 -x "select 'reorgchk update statistics on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';' from syscat.tables where type = 'T' " > reorgchk.out db2 -x "select 'reorgchk update statistics on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';' from syscat.tables where type = 'T' " > reorgchk.out und dann db2 -tvf reorgchk.out > reorgchk.txt und schließlich reorg_filter.js reorgchk.txt Hier ist das WSH-Skript reorg_filter.js, das eine Liste potenziell problematischer Objekte anzeigt. Was höchstwahrscheinlich klein sein sollte, wenn die Wartungsfenster korrekt installiert sind:
 var block = "", include = false, fso = new ActiveXObject("Scripting.FileSystemObject"); var input = fso.OpenTextFile(WScript.Arguments.Item(0), 1, false); var output = fso.CreateTextFile(WScript.ScriptFullName.replace(/\.js/i, ".txt"), true); while(!input.AtEndOfStream){ line = input.ReadLine(); if(/^reorgchk\s/i.test(line)){ if(include)output.WriteLine(block); block = ""; include = false; } block += line + "\n"; if(/\s([-*]{3}|[-*]{5})\s+$/.test(line))if(/\*/.test(RegExp.$1))include = true; } if(include)output.WriteLine(block); 

Analysieren Sie als Nächstes die Beschreibung und starten Sie die Reorganisation der ausgewählten Objekte oder vergrößern Sie das Offline-Wartungsfenster. Nach mehreren Iterationen wird klar, welche Objekte nicht reorganisiert werden.
Ich hoffe, ich habe nichts verwirrt, ich habe das Archiv der Skripte von fünf Jahren aufgehoben, wahrscheinlich verschreibungspflichtig. Ich weiß nicht, ob diese Ergänzung für irgendjemanden nützlich sein wird.

Links zu den genannten Ressourcen / Dateien


Die grundlegenden Informationen, mit Ausnahme derjenigen, die in nicht mehr existierenden Kursen erhalten wurden, finden Sie hier (damals war der Link anders).

Viel wurde bereits vergessen, aber ein Link zum PDF-Dokument „Best Practices. Optimieren und Überwachen der Leistung des Datenbanksystems “wurde gefunden (der Link ist jetzt neu, das alte Wiki existiert ab dem 01.01.2020 nicht mehr, aber hier ist noch nicht alles ganz stabil).
Wenn der Link nicht mehr funktioniert, werden Name und Hashes der Datei angezeigt:
Name: DB2BP_System_Performance_0813.pdf
SHA384: 180E EF56 DB7F 70DE A514 981C 2718 ADD1 5702 D142 ABFD 090C A2B1 529C E918 B7AE DD08 7C7E B36C 3466 C843 C808 D4DA DE66
SHA256: A1B3 C600 B28A 8B9F 25ED 4AC3 F6C2 C6BB F884 BDA5 4121 DA1A 9C05 D0B0 F5CF D84E
MD5: F086 F0DD 6CFC 4DAB 4723 FBE4 A2BE AB41
SHA512: 6C86 B044 7F60 1DDA AFA5 D726 A6C2 9B29 68DD 3A90 1606 DA17 0464 5213 C0B0 B3C8 E636 221A 316D 151F 7E05 2B6D 55EB 95FC 09E7 B1AD 8CFE 0848 AB9F 9408 D214 35
SHA1: 7911 0741 2E6C FD6B 4B5B F639 5C0D 48D8 3528 A64D

Source: https://habr.com/ru/post/de465981/


All Articles