In diesem Artikel wird ein praktisches Problem vorgestellt, mit dem Administratoren während des Datenbankinitialisierungsprozesses häufig konfrontiert sind: Wie importiert man große Datenmengen in das Datenbanksystem? Während des Datenbankinitialisierungsprozesses besteht ein praktisches Problem, mit dem Administratoren konfrontiert sind, darin, wie große Datenmengen in das Datenbanksystem importiert werden. In der SQL Server-Datenbank stehen Datenbankadministratoren einige umfangreiche Datenimport- und -exporttools zur Verfügung. Beispielsweise können Administratoren das Dienstprogramm bcp verwenden, um Daten in großen Mengen zu exportieren, Daten in großen Mengen zu importieren und formatierte Dateien zu generieren. Beispielsweise können Bulk-Insert-Anweisungen verwendet werden, um große Datenmengen direkt aus Datendateien in Datenbanktabellen oder unpartitionierte Ansichten usw. zu importieren.
Obwohl diese Dienstprogramme in der SQL Server-Datenbank bereitgestellt werden. Allerdings müssen Administratoren bei dieser Arbeit in der Praxis immer noch vorsichtig sein. Insbesondere beim Importieren und Exportieren von Daten mit großer Kapazität müssen Sie die folgenden Aspekte beachten.
1. Versuchen Sie, die vom System bereitgestellten Tools zum Importieren und Exportieren großer Datenmengen zu verwenden.
Die verschiedenen vom Autor oben erwähnten praktischen Tools haben ein gemeinsames Merkmal: Sie führen während des Importvorgangs bestimmte Optimierungen für Daten mit großer Kapazität durch. Beispielsweise wird dadurch das Format einiger Daten standardisiert, Zeit beim Import und Export gespart usw. Bei der Verwendung dieser Tools gibt es jedoch einen Unterschied zu anderen gewöhnlichen Datenimport- und -exporttools: Importvorgänge mit großer Kapazität unterstützen nicht den Import von Daten in durch Kommas getrennte Dateien, die häufig als Textdateien bezeichnet werden. Obwohl der Administrator derzeit auch andere Tools zum Importieren großer Datenmengen im Dateiformat verwenden kann, empfehle ich dies im Allgemeinen nicht. Denn andere Tools unterstützen die Optimierungsfunktion beim Importvorgang nicht. Aus diesem Grund empfiehlt der Autor, andere Tools wie ACCESS und andere Zwischentools zu verwenden, um die Daten in der Textdatei zunächst in eine normale Tabellenform zu konvertieren und sie dann mit den oben genannten Tools in das System zu importieren. Dies erhöht zwar die Arbeitsbelastung, kann jedoch die Qualität von Daten mit großer Kapazität sicherstellen. Aus diesem Grund empfehle ich Benutzern bei meiner eigentlichen Arbeit dringend, die vom System bereitgestellten Tools zum Importieren und Exportieren von Daten mit großer Kapazität zu verwenden, wenn sie auf ein solches Problem stoßen.
Darüber hinaus ist die Verwendung formatierter Dateien zur Verbesserung der Standardisierung großer Datenmengen eine gute Wahl. Mehrere der oben genannten Import- und Exporttools mit großer Kapazität unterstützen die Verwendung spezieller Formatdateien, um die Formatinformationen jedes Felds in der Originaldatendatei zu speichern. Die Formatdatei kann auch Informationen über die entsprechende Datenbanktabelle enthalten. Formatdateien können verwendet werden, um alle Formatierungsinformationen bereitzustellen, die für den Massenexport von Daten aus und den Massenimport von Daten in eine Datenbankinstanz erforderlich sind. Laienhaft ausgedrückt bietet eine Formatdatei eine flexible Möglichkeit, das Format von Daten in einer Datendatei während des Imports zu interpretieren und Daten in einer Datendatei während des Exports zu formatieren. Durch diese Flexibilität entfällt die Notwendigkeit, speziellen Code zur Interpretation der Daten zu schreiben oder die Daten neu zu formatieren, um den besonderen Anforderungen der Datenbank oder externen Anwendung gerecht zu werden. Bei flexibler Nutzung formatierter Dateien können Anwender umfangreiche Daten direkt im benötigten Format exportieren oder importieren, ohne im Nachhinein zusätzliche Formatanpassungen vornehmen zu müssen.
2. Wählen Sie den entsprechenden Datenbankprotokoll-Betriebsmodus aus
Wie jeder weiß, werden alle von Benutzern in der Datenbank vorgenommenen Änderungen in den entsprechenden Protokollen aufgezeichnet. Der Import und Export großer Datenmengen ist keine Ausnahme. Da die Daten mit großer Kapazität jedoch relativ groß sind, belegen sie eine relativ große Transaktionsprotokollfunktion. Aus diesem Grund empfiehlt der Autor, dass Benutzer vor dem Import von Daten mit großer Kapazität am besten einen geeigneten Betriebsmodus für das Datenbankprotokoll auswählen. Der Ansatz des Autors besteht darin, dass der Benutzer am besten den Protokollwiederherstellungsmodus mit großer Kapazität wählt, wenn er Daten mit großer Kapazität importieren muss. Warten Sie, bis die Importarbeiten abgeschlossen sind, und kehren Sie dann zum ursprünglichen Modus zurück.
Dies liegt hauptsächlich daran, dass im Protokollmodus mit großer Kapazität die Unterstützung für Datenimportarbeiten mit großer Kapazität relativ gut ist. Im Vergleich zu anderen protokollierten Wiederherstellungsmodellen (z. B. dem vollständigen Wiederherstellungsmodell) zeichnet das massenprotokollierte Wiederherstellungsmodell Massenvorgänge nur minimal auf. Aus diesem Grund schützt das Protokolloperationswiederherstellungsmodell mit großer Kapazität umfangreiche Vorgänge vor Hardwarefehlern, bietet eine bessere Leistung und beansprucht nur minimalen Protokollspeicherplatz. Daher trägt die Verwendung der massenprotokollierten Wiederherstellung dazu bei, zu verhindern, dass den Transaktionsprotokollen der Speicherplatz ausgeht, da bei der massenprotokollierten Wiederherstellung keine Protokollzeilen eingefügt werden. Dieser Massenprotokoll-Betriebsmodus eignet sich sehr gut für Datenbanken, die das vollständige Wiederherstellungsmodell verwenden. Das massenprotokollierte Wiederherstellungsmodell ist nützlich, wenn Massenoperationen für Tabellen ohne Index durchgeführt werden.
Der Protokollbetriebsmodus mit großer Kapazität birgt jedoch auch gewisse Risiken. Ein Wiederherstellungsmodell wie das Massenprotokoll erhöht das Risiko eines Datenverlusts bei diesen Massenkopiervorgängen. Denn der Massenprotokoll-Betriebsmodus verhindert, dass das Datenbanksystem die an jeder Transaktion vorgenommenen Änderungen einzeln erfasst. Wenn eine Protokollsicherung Massenprotokollvorgänge enthält, können Sie keinen Zeitpunkt in dieser Protokollsicherung wiederherstellen. Sie können nur die gesamte Protokollsicherung wiederherstellen. Auch im massenprotokollierten Wiederherstellungsmodell gilt: Wenn die Protokollsicherung alle Massenvorgänge abdeckt, enthält die Protokollsicherung auch die Protokolldatensätze und Datenseiten, die durch die Massenvorgänge geändert wurden. Dies ist für die Erfassung der Ergebnisse von Massenprotokollierungsvorgängen von entscheidender Bedeutung. Zusammengeführte Datenbereiche können Protokollsicherungen sehr groß machen. Darüber hinaus erfordert das Sichern von Protokollen Zugriff auf Datendateien, die große Mengen an Protokolltransaktionen enthalten. Wenn auf betroffene Datenbankdateien nicht zugegriffen werden kann, wird das Transaktionsprotokoll nicht gesichert und alle in diesem Protokoll festgeschriebenen Vorgänge gehen verloren. Daher ist der Protokollsicherungsmodus mit großer Kapazität kein sicherer Protokollmodus.
3. Überlegen Sie, ob Sie zunächst den Index der Tabelle vorübergehend löschen müssen
Der Index ist eine spezielle Datei und seine Rolle in der Datenbank ist sehr wichtig. Vereinfacht ausgedrückt: Vergleicht man die Datenbank mit einem Buch, dann ist der Index wie das Inhaltsverzeichnis des Buches. Der Index enthält Referenzzeiger auf alle Datensätze in der Datentabelle. Es besteht kein Zweifel, dass Indizes die Datenbankleistung verbessern können. Doch nicht in jedem Fall kann eine Indexierung einen positiven Effekt haben. In einigen Sonderfällen wird die Leistung einiger Vorgänge beeinträchtigt, z. B. beim Importieren großer Datenmengen.
Ein Index kann Datenabrufvorgänge beschleunigen, Datenänderungsvorgänge jedoch verlangsamen. Denn jedes Mal, wenn ein Datensatz geändert oder eingefügt wird, muss der Index aktualisiert werden. Mit anderen Worten: Wenn eine Million Datensätze eingefügt werden, muss der Index eine Million Mal aktualisiert werden. Es ist ersichtlich, dass der Index beim Importieren großer Datenmengen viele Datenbankressourcen verbraucht und somit die Leistung der Datenbank verringert. Wenn in der Zieltabelle Indizes vorhanden sind, wirkt sich dies nicht nur auf die Geschwindigkeit des Imports großer Datenmengen in die Datenbank aus, sondern verringert auch die Leistung des normalen Zugriffs anderer Benutzer auf die Datenbank.
Aus diesem Grund schlägt der Autor vor, dass es am besten ist, zuerst den Index zu löschen, wenn die zu importierende Tabelle nicht viele Daten enthält, um die Leistung des Datenimports mit großer Kapazität zu verbessern. Aktivieren Sie die Indizierung nach dem Import erneut. Wenn die Tabelle jedoch bereits viele Daten enthält, die importiert werden müssen, und die zu importierenden Daten möglicherweise ähnlich oder kleiner als die vorhandenen Daten sind, besteht keine Notwendigkeit, den Index zu löschen. Das Löschen des Index zu diesem Zeitpunkt hat den gegenteiligen Effekt. Denn die Zeit, die das Datenbanksystem benötigt, um die Indizes neu zu erstellen, kann länger sein als die beim Massenimport eingesparte Zeit. Zu diesem Zeitpunkt verliert der Administrator mehr als den Gewinn, der durch das Löschen des Index der Zieltabelle entsteht.
4. Führen Sie unmittelbar nach dem Datenimport eine Datenbanksicherung durch
Genau wie beim Einrichten von Datenbankobjekten müssen Administratoren nach dem Import großer Datenmengen in das Datenbanksystem die vorhandene Datenbank rechtzeitig sichern. Aufgrund der zeitnahen Hilfe der System-Importtools mit großer Kapazität ist dieser Datenimport immer noch sehr mühsam und zeitaufwändig. Aus diesem Grund muss der Administrator die Datenbank nach dem erfolgreichen Import der großen Datenmengen in das Datenbanksystem rechtzeitig sichern. Der Autor möchte hier alle daran erinnern, dass die Sicherungsmethoden in den verschiedenen Betriebsprotokollmodi häufig unterschiedlich sind.
Nach dem Import großer Datenmengen müssen Administratoren die Datenbank sichern. Der Vorschlag des Autors lautet: Wenn der Administrator zu diesem Zeitpunkt ein einfaches Protokollwiederherstellungsmodell übernimmt, sollte er unmittelbar nach Abschluss des Massenimportvorgangs eine vollständige Sicherung oder differenzielle Sicherung durchführen (wenn es die Zeit erlaubt, ist es am besten, eine vollständige Sicherung durchzuführen). . Und wenn der Datenbankadministrator zu diesem Zeitpunkt das Protokollwiederherstellungsmodell mit großer Kapazität oder das vollständige Wiederherstellungsmodell anwendet, nicht viel Zeit zur Verfügung steht oder befürchtet, dass die vollständige Sicherung zu diesem Zeitpunkt den Zugriff des Benutzers beeinträchtigt, führt er nur eine Protokollsicherung durch ist genug. Wenn der Datenbankserver nicht zu einem Produktionsserver geworden ist (d. h. er wird immer noch von keinem Benutzer verwendet), ist es sicherer, eine vollständige Sicherung der Datenbank durchzuführen.
5. Häufige Fehler
Es gibt wahrscheinlich zwei häufigste Fehler beim Import großer Datenmengen.
Erstens ist das Format der bereitgestellten Datei falsch. Wie oben erwähnt, unterstützt das von der Datenbank bereitgestellte Massenimporttool normalerweise keine Textdateien. Zu diesem Zweck müssen Administratoren vorherige Konvertierungen durchführen. Zweitens sollten Sie sich darüber im Klaren sein, dass versteckte Zeichen Probleme verursachen können. Viele Software- und Texteditoren zeigen versteckte Zeichen an. Diese versteckten Zeichen befinden sich normalerweise am Ende der Datendatei. Bei Massenimportvorgängen können versteckte Zeichen in Datendateien unvorhersehbare Probleme wie unerwartete Nullzeichenfehler usw. verursachen. Dieser Fehler lässt sich leicht vermeiden. Solange der Datenbankadministrator alle versteckten Zeichen sucht und entfernt, bevor er die Daten importiert. Tatsächlich tritt dieses Problem nicht nur beim Import großer Datenmengen auf, sondern auch beim Import kleiner Datenmengen.