Ich plane die Livemigration einer 2-TB-Datenbank in partitionierte Tabellen. Das System ist im Großen und Ganzen ein Dokumentenspeicher, bei dem der größte Teil des Speicherplatzes LOBs zwischen 50 KB und 500 KB zugewiesen wird, wobei ein kleiner Prozentsatz im Bereich von 500 KB bis 1 MB liegt. Ein Teil der Migration umfasst das BCPing von Daten aus der alten in die neue Datenbank.
BCP ist der bevorzugte Ansatz, da die aktuelle / historische Aufteilung der Daten das schrittweise Extrahieren der älteren Daten (in ruhigeren Zeiträumen) vor einem endgültigen Wechsel ermöglicht, wodurch die Auswirkungen auf das Live-System minimiert werden. Das Datenvolumen und die Verfügbarkeit des Speichers schließen eine in-situ-Wiederherstellung eines Partitionsschemas aus .
Ich vermute, dass aufgrund des BLOB-Inhalts einige Leistungssteigerungen durch Experimentieren mit KILOBYTES_PER_BATCH statt mit ROWS_PER_BATCH zu verzeichnen sind. In der BCP-Dokumentation wird vorgeschlagen, dass SQL die Vorgänge basierend auf diesem Wert optimieren kann.
Was ich nicht finden kann, ist eine Anleitung zur Art dieser Optimierungen oder wo ich mit dem Testen beginnen soll. In Abwesenheit von Vorschlägen werde ich versuchen, kurze Läufe an 4/8/16/32 / 64mb-Grenzen zu starten.
Wahrscheinlich hat das Ändern der Paketgröße (BCP -a-Parameter anstelle der Einstellung auf Serverebene) einige Vorteile, aber ich bin geneigt, dies auf das Maximum von 65535 zu erhöhen, sofern niemand einen formelhafteren Ansatz verfolgt.