Datendefinitionssprachen für die SchemamigrationData definition languages for schema migration

In diesem Artikel werden Entwurfsaspekte und Leistungsoptionen für Datendefinitionssprachen erläutert, die für die Schemamigration zu Azure Synapse Analytics relevant sind.This article describes design considerations and performance options for data definition languages (DDLs) when you're migrating schemas to Azure Synapse Analytics.

Überlegungen zum EntwurfDesign considerations

Überprüfen Sie diese Entwurfsüberlegungen beim Planen der Schemamigration.Review these design considerations as you plan your schema migration.

Vorbereitung für die MigrationPreparation for migration

Bei der Vorbereitung für die Migration vorhandener Daten zu Azure Synapse Analytics ist es wichtig, den Umfang des Migrationsdurchlaufs eindeutig zu definieren (insbesondere für ein erstes Migrationsprojekt).When you're preparing to migrate existing data to Azure Synapse Analytics, it's important to clearly define the scope of the exercise (especially for an initial migration project). Wenn Sie sich zuvor mit der Migration von Datenbankobjekten und zugehörigen Prozessen befassen, können der Aufwand und die Risiken für das spätere Projekt verringert werden.The time spent up front to understand how database objects and related processes will migrate can reduce both effort and risk later in the project.

Erfassen Sie den Bestand an zu migrierenden Datenbankobjekten.Create an inventory of database objects to be migrated. Je nach Quellplattform umfasst dieser Bestand einige oder alle der folgenden Objekte:Depending on the source platform, this inventory will include some or all of the following objects:

  • TabellenTables
  • SichtenViews
  • IndizesIndexes
  • FunktionenFunctions
  • Gespeicherte ProzedurenStored procedures
  • Datenverteilung und -partitionierungData distribution and partitioning

Die grundlegenden Informationen für diese Objekte sollten Metriken wie die Zeilenanzahl, die physische Größe, die Datenkomprimierungsverhältnisse und die Objektabhängigkeiten beinhalten.The basic information for these objects should include metrics such as row counts, physical size, data compression ratios, and object dependencies. Diese Informationen sollten über Abfragen von Systemkatalogtabellen im Quellsystem verfügbar sein.This information should be available via queries against system catalog tables in the source system. Die Systemmetadaten sind die beste Quelle für diese Informationen.The system metadata is the best source for this information. Die externe Dokumentation ist möglicherweise veraltet und umfasst nicht die Änderungen, die seit der anfänglichen Implementierung an der Datenstruktur vorgenommen wurden.External documentation might be stale and not in sync with changes that have been applied to the data structure since the initial implementation.

Sie können auch die tatsächliche Objektnutzung anhand von Abfrageprotokollen analysieren oder unterstützende Tools von Microsoft-Partnern wie Attunity Visibility verwenden.You might also be able to analyze actual object usage from query logs or use tooling from Microsoft partners like Attunity Visibility to help. Möglicherweise müssen einige Tabellen nicht migriert werden, da sie nicht mehr in Produktionsabfragen verwendet werden.It's possible that some tables don't need to be migrated because they're no longer used in production queries.

Die Datengröße und die Arbeitsauslastungsinformationen sind für Azure Synapse Analytics wichtig, da Sie so die geeigneten Konfigurationen bestimmen können.Data size and workload information is important for Azure Synapse Analytics because it helps to define appropriate configurations. Ein Beispiel hierfür ist der erforderliche Parallelitätsgrad.One example is the required levels of concurrency. Das erwarte Wachstum von Daten und Arbeitsauslastungen kann sich auf die empfohlene Zielkonfiguration auswirken. Deshalb sollten Ihnen diese Informationen bekannt sein.Understanding the expected growth of data and workloads might affect a recommended target configuration, and it's a good practice to also harness this information.

Wenn Sie Datenvolumen verwenden, um den für die neue Zielplattform benötigten Speicher zu schätzen, ist es wichtig, das Datenkomprimierungsverhältnis (sofern vorhanden) in der Quelldatenbank zu kennen.When you're using data volumes to estimate the storage required for the new target platform, it's important to understand the data compression ratio, if any, on the source database. Einfach von der Menge des auf dem Quellsystem verwendeten Speichers auszugehen, ist wahrscheinlich die falsche Grundlage für eine Größenbestimmung.Simply taking the amount of storage used on the source system is likely to be a false basis for sizing. Überwachungs- und Metadateninformationen können nützlich sein, um die Größe der unkomprimierten Rohdaten sowie den Mehraufwand für die Indizierung, Datenreplikation, Protokollierung oder andere Prozesse im aktuellen System zu ermitteln.Monitoring and metadata information can help you determine uncompressed raw data size and overheads for indexing, data replication, logging, or other processes in the current system.

Die Größe der unkomprimierten Rohdaten in den zu migrierenden Tabellen ist ein guter Ausgangspunkt für das Schätzen des Speichers, der in der neuen Azure Synapse Analytics-Zielumgebung erforderlich ist.The uncompressed raw data size of the tables to be migrated is a good starting point for estimating the storage required in the new target Azure Synapse Analytics environment.

Die neue Zielplattform enthält zudem einen Komprimierungsfaktor und Indizierungsaufwand. Diese unterscheiden sich jedoch wahrscheinlich vom Quellsystem.The new target platform will also include a compression factor and indexing overhead, but these will probably be different from the source system. Im Preis für Azure Synapse Analytics-Speicher sind auch Momentaufnahmesicherungen für sieben Tage enthalten.Azure Synapse Analytics storage pricing also includes seven days of snapshot backups. Dies kann sich auf die Gesamtkosten für den benötigten Speicher im Vergleich zur vorhandenen Umgebung auswirken.When compared to the existing environment, this can have an impact on the overall cost of storage required.

Sie können die Leistungsoptimierung für das Datenmodell bis zu einem späten Zeitpunkt des Migrationsvorgangs verzögern und so planen, dass sie erst durchgeführt wird, wenn echte Datenvolumes im Data Warehouse vorhanden sind.You can delay performance tuning for the data model until late in the migration process and time this with when real data volumes are in the data warehouse. Es wird jedoch empfohlen, einige Optionen für die Leistungsoptimierung schon vorher zu implementieren.However, we recommend that you implement some performance tuning options earlier on.

Beispielsweise ist es in Azure Synapse Analytics sinnvoll, kleine Dimensionstabellen als replizierte Tabellen und große Faktentabellen als gruppierte Columnstore-Indizes zu definieren.For example, in Azure Synapse Analytics, it makes sense to define small dimension tables as replicated tables and to define large fact tables as clustered columnstore indexes. Ebenso geben Indizes, die in der Quellumgebung definiert sind, einen guten Hinweis darauf, welche Spalten von der Indizierung in der neuen Umgebung profitieren können.Similarly, indexes defined in the source environment provide a good indication of which columns might benefit from indexing in the new environment. Wenn Sie diese Informationen beim anfänglichen Definieren der Tabellen vor dem Laden verwenden, sparen Sie später im Prozess Zeit.Using this information when you're initially defining the tables before loading will save time later in the process.

Es empfiehlt sich, die Komprimierungsrate und den Indizierungsaufwand für Ihre eigenen Daten bei Fortschreiten des Migrationsprozesses in Azure Synapse Analytics zu messen.It's good practice to measure the compression ratio and index overhead for your own data in Azure Synapse Analytics as the migration project progresses. Diese Messung ermöglicht eine zukünftige Kapazitätsplanung.This measure enables future capacity planning.

Möglicherweise kann auch das vorhandene Data Warehouse vor der Migration vereinfacht werden, indem die Komplexität für eine einfache Migration verringert wird.It might be possible to simplify your existing data warehouse before migration by reducing complexity to ease migration. Dafür sind ggf. folgende Schritte nötig:This effort might include:

  • Löschen oder archivieren Sie nicht verwendete Tabellen vor der Migration, um eine Migration nicht verwendeter Daten zu vermeiden.Removing or archiving unused tables before migrating to avoid migrating data that's not used. Durch das Archivieren in Azure Blob Storage und das Definieren der Daten als externe Tabelle können die Daten zu geringeren Kosten verfügbar bleiben.Archiving to Azure Blob Storage and defining the data as an external table might keep the data available for a lower cost.
  • Konvertieren Sie physische Data Marts mithilfe von Datenvirtualisierungssoftware in virtuelle Data Marts, um den Migrationsumfang zu verringern.Converting physical data marts to virtual data marts by using data virtualization software to reduce what you have to migrate. Diese Konvertierung verbessert auch die Agilität und senkt die Gesamtbetriebskosten.This conversion also improves agility and reduces total cost of ownership. Sie können diese als Modernisierungsmaßnahme während der Migration betrachten.You might consider it as modernization during migration.

Ein Ziel des Migrationsdurchlaufs kann auch die Modernisierung des Warehouse sein, indem das zugrunde liegende Datenmodell geändert wird.One objective of the migration exercise might also be to modernize the warehouse by changing the underlying data model. Ein Beispiel hierfür ist der Wechsel von einem Inmon-Datenmodell zu einem Datentresoransatz.One example is moving from an Inmon-style data model to a data vault approach. Sie sollten darüber während der Vorbereitungsphase entscheiden und eine Strategie für den Übergang zum Migrationsplan etablieren.You should decide this as part of the preparation phase and incorporate a strategy for the transition into the migration plan.

In diesem Szenario wird empfohlen, zuerst das Datenmodell auf die neue Plattform zu migrieren und dann in Azure Synapse Analytics zum neuen Modell zu wechseln.The recommended approach in this scenario is to first migrate the data model as is to the new platform and then transition to the new model in Azure Synapse Analytics. Verwenden Sie die Skalierbarkeits- und Leistungsfeatures der Plattform, um die Transformation auszuführen, ohne das Quellsystem zu beeinträchtigen.Use the platform's scalability and performance characteristics to execute the transformation without affecting the source system.

DatenmodellmigrationData model migration

Je nach Plattform und Ursprüngen des Quellsystems kann das Datenmodell einiger oder aller Teile möglicherweise bereits die Form eines Stern- oder Schneeflockenschemas aufweisen.Depending on the platform and the origins of the source system, the data model of some or all parts may already be in a star or snowflake schema form. In diesem Fall kann es direkt und unverändert zu Azure Synapse Analytics migriert werden.If so, you can directly migrate it to Azure Synapse Analytics as is. Dieses Szenario ist die einfachste und risikoärmste Migrationsoption.This scenario is the easiest and lowest-risk migration to achieve. Eine Migration in unverändertem Zustand kann auch die erste Phase einer komplexeren Migration sein, die einen Übergang zu einem neuen Datenmodell umfasst, z. B. wie bereits beschrieben zu einem Datentresor.An as-is migration can also be the first stage of a more complex migration that includes a transition to a new underlying data model such as a data vault, as described earlier.

Sie können sämtliche relationalen Tabellen und Sichten zu Azure Synapse Analytics migrieren.Any set of relational tables and views can be migrated to Azure Synapse Analytics. Wenn Sie Arbeitsauslastungen für Analyseabfragen für große Datasets ausführen, erzielen Sie mit einem Stern- oder Schneeflockendatenmodell im Allgemeinen die beste Gesamtleistung.For analytical query workloads against a large data set, a star or snowflake data model generally gives the best overall performance. Wenn das Quelldatenmodell noch nicht in dieser Form vorliegt, kann es sinnvoll sein, den Migrationsprozess zur Umstrukturierung des Modells zu nutzen.If the source data model is not already in this form, it might be worth using the migration process to reengineer the model.

Wenn das Migrationsprojekt Änderungen am Datenmodell einschließt, sollten Sie diese Änderungen in der neuen Zielumgebung ausführen.If the migration project includes any changes to the data model, the best practice is to perform these changes in the new target environment. Sie können also zuerst das vorhandene Modell migrieren und dann die Leistungsfähigkeit und Flexibilität von Azure Synapse Analytics nutzen, um die Daten in das neue Modell umzuwandeln.That is, migrate the existing model first, and then use the power and flexibility of Azure Synapse Analytics to transform the data to the new model. Durch diesen Ansatz werden die Auswirkungen auf das vorhandene System minimiert und die Leistung und Skalierbarkeit von Azure Synapse Analytics genutzt, um alle Änderungen schnell und kostengünstig vorzunehmen.This approach minimizes the impact on the existing system and uses the performance and scalability of Azure Synapse Analytics to make any changes quickly and cost-effectively.

Sie können das vorhandene System in mehrere Schichten migrieren, z. B. in eine Datenerfassungs- und Stagingschicht, eine Data-Warehouse-Schicht und eine Berichtserstellungsschicht oder Data-Mart-Schicht.You can migrate the existing system as several layers; for example, the data ingest/staging layer, data warehouse layer, and reporting or data mart layer. Jede Schicht besteht aus relationalen Tabellen und Sichten.Each layer consists of relational tables and views. Obwohl diese unverändert zu Azure Synapse Analytics migriert werden können, kann es kostengünstiger und zuverlässiger sein, einige Features und Funktionen des Azure-Ökosystems zu nutzen.Although you can migrate these to Azure Synapse Analytics as they are, it might be more cost-effective and reliable to use some of the features and capabilities of the Azure ecosystem. Beispiel:For example:

  • Datenerfassung und Staging: Anstelle von relationalen Tabellen können Sie für schnelles paralleles Datenladen während eines Teils des ETL-Prozesses (Extrahieren, Transformieren und Laden) oder ELT-Prozesses (Extrahieren, Laden und Transformieren) Azure Blob Storage in Verbindung mit PolyBase verwenden.Data ingest and staging: Instead of using relational tables for fast parallel data loading, you can use Azure Blob storage with PolyBase during part of the ETL (extract, transform, load) or ELT (extract, load, transform) process.

  • Datenerfassung und Staging: Für einen Teil des ETL-Prozesses (Extrahieren, Transformieren und Laden) oder ELT-Prozesses (Extrahieren, Laden und Transformieren) können Sie Azure Blob Storage in Verbindung mit PolyBase anstelle von relationalen Tabellen verwenden, um Daten schnell und parallel zu laden.Data ingest and staging: You can use Azure Blob Storage in conjunction with PolyBase for fast parallel data loading for part of the ETL (extract, transform, load) or ELT (extract, load, transform) process, rather than relational tables.

  • Berichtsschicht und Data Marts: Die Leistungsfeatures von Azure Synapse Analytics machen es möglicherweise überflüssig, aggregierte Tabellen für Berichtszwecke oder Data Marts physisch zu instanziieren.Reporting layer and data marts: The performance characteristics of Azure Synapse Analytics might eliminate the need to physically instantiate aggregated tables for reporting purposes or data marts. Diese können möglicherweise als Sichten für das zentrale Data Warehouse oder über die Datenvirtualisierungsschicht eines Drittanbieters implementiert werden.It might be possible to implement these as views onto the core data warehouse or via a third-party data virtualization layer. Grundsätzlich können der Prozess für die Migration von Verlaufsdaten und ggf. auch inkrementelle Aktualisierungen wie im folgenden Diagramm dargestellt erfolgen:At the basic level, you can achieve the process for data migration of historical data and possibly also incremental updates as shown in this diagram:

    Diagramm: modernes Data WarehouseDiagram that illustrates a modern data warehouse. Abbildung 1: Ein modernes Data Warehouse.Figure 1: A modern data warehouse.

Wenn Sie diesen oder einen ähnlichen Ansatz verwenden können, wird die Anzahl der zu migrierenden Tabellen reduziert.If you can use these or similar approaches, the number of tables to be migrated is reduced. Einige Prozesse werden möglicherweise vereinfacht oder überflüssig, wodurch die Arbeitsauslastung für die Migration weiter reduziert wird.Some processes might be simplified or eliminated, again reducing the migration workload. Die Anwendbarkeit dieser Ansätze hängt vom jeweiligen Anwendungsfall ab.The applicability of these approaches depends on the individual use case. Das allgemeine Prinzip ist jedoch, nach Möglichkeit die Features und Funktionen des Azure-Ökosystems zu verwenden, um die Arbeitsauslastung für die Migration zu reduzieren und eine kosteneffiziente Zielumgebung zu erstellen.But, the general principle is to consider using the features and facilities of the Azure ecosystem, where possible, to reduce the migration workload and build a cost-effective target environment. Das gilt auch für andere Features wie Sicherung, Wiederherstellung, Workflowverwaltung und Workflowüberwachung.This also holds true for other functions, such as backup/restore and workflow management and monitoring.

Es stehen außerdem Produkte und Dienste von Microsoft-Partnern zur Verfügung, die bei der Data-Warehouse-Migration helfen und in einigen Fällen Teile des Prozesses automatisieren.Products and services available from Microsoft partners can help with data warehouse migrations and automate parts of the process for some cases. Wenn das vorhandene System ein ETL-Produkt eines Drittanbieters beinhaltet, unterstützt es Azure Synapse Analytics als Zielumgebung möglicherweise bereits.If the existing system incorporates a third-party ETL product, it might already support Azure Synapse Analytics as a target environment. Die vorhandenen ETL-Workflows können an das neue Data Warehouse-Ziel umgeleitet werden.The existing ETL workflows can be redirected to the new target data warehouse.

Data Marts: physisch oder virtuellData marts: Physical or virtual

Organisationen mit älteren Data-Warehouse-Umgebungen erstellen häufig Data Marts, die den Abteilungen oder Geschäftsfunktionen gute Ad-hoc-Self-Service-Abfragen und Berichtsleistung ermöglichen.It's a common practice for organizations with older data warehouse environments to create data marts that provide their departments or business functions with good ad hoc self-service query and report performance. Ein Data Mart besteht in der Regel aus einer Teilmenge des Data Warehouse und enthält aggregierte Versionen der ursprünglichen Daten.A data mart typically consists of a subset of the data warehouse that contains aggregated versions of the original data. Da es sich meistens um ein dimensionales Datenmodell handelt, sind benutzerfreundliche Tools wie Tableau, MicroStrategy und Microsoft Power BI enthalten, um Daten einfach und schnell abzufragen.Its form, typically a dimensional data model, supports users to easily query the data and receive fast response times from user-friendly tools like Tableau, MicroStrategy, or Microsoft Power BI.

Eine Verwendung von Data Marts besteht darin, die Daten in einer nutzbaren Form verfügbar zu machen, selbst wenn das zugrunde liegende Warehouse-Datenmodell z. B. ein Datentresor ist.One use of data marts is to expose the data in a usable form, even if the underlying warehouse data model is something different (such as a data vault). Dieser Ansatz wird auch als Modell mit drei Ebenen bezeichnet.This approach is also known as a three-tier model.

Sie können separate Data Marts für einzelne Geschäftseinheiten innerhalb einer Organisation verwenden, um stabile Datensicherheitssysteme zu implementieren.You can use separate data marts for individual business units within an organization to implement robust data security regimes. Beispielsweise können Sie Benutzern den Zugriff auf bestimmte relevante Data Marts gewähren und vertrauliche Daten löschen, verschleiern oder anonymisieren.For example, you can allow user access to specific data marts relevant to them and eliminate, obfuscate, or anonymize sensitive data.

Wenn diese Data Marts als physische Tabellen implementiert werden, sind zusätzliche Speicherressourcen nötig, um diese aufzubewahren, und zusätzliche Verarbeitungsschritte, um sie regelmäßig zu erstellen und zu aktualisieren.If these data marts are implemented as physical tables, they require additional storage resources to house them and additional processing to build and refresh them regularly. Physische Tabellen verdeutlichen, dass die Daten im Data Mart nur so aktuell wie der letzte Aktualisierungsvorgang sind. Für hochgradig flüchtige Datendashboards sind sie daher möglicherweise nicht geeignet.Physical tables show that the data in the mart is only as current as the last refresh operation, so they may not be suitable for highly volatile data dashboards.

Dank der Einführung kostengünstiger skalierbarer MPP-Architekturen (Massively Parallel Processing) können Sie Data-Mart-Funktionen ggf. bereitstellen, ohne den Mart als Satz physischer Tabellen instanziieren zu müssen.With the advent of low-cost, scalable massively parallel processing (MPP) architectures, you might be able to provide data mart functionality without needing to instantiate the mart as a set of physical tables. Dies können Sie mit Azure Synapse Analytics erreichen, indem Sie eine der folgenden Methoden zur Virtualisierung der Data Marts verwenden:You can achieve this with Azure Synapse Analytics by using one of these methods to virtualize the data marts:

  • SQL-Sichten im primären Data WarehouseSQL views on the main data warehouse.
  • Eine Virtualisierungsschicht, die Features wie Azure Synapse Analytics-Sichten oder Drittanbieterprodukte für die Virtualisierung wie Denodo verwendetA virtualization layer that uses features such as views in Azure Synapse Analytics or third-party virtualization products such as Denodo.

Durch diesen Ansatz wird der Bedarf für zusätzlichen Speicher oder zusätzliche Aggregationsverarbeitungen reduziert oder entfällt.This approach simplifies or eliminates the need for additional storage and aggregation processing. Zudem müssen insgesamt weniger Datenbankobjekte migriert werden.It reduces the overall number of database objects to be migrated.

Ein weiterer Vorteil des Data-Warehouse-Ansatzes besteht in der Möglichkeit, Vorgänge wie Joins und Aggregationen für große Datenvolumes auszuführen.Another benefit of the data warehouse approach is the capacity to run operations such as joins and aggregations on large data volumes. Wenn Sie die Aggregations- und Joinlogik beispielsweise in eine Virtualisierungsschicht implementieren und die externe Berichterstellung in einer virtualisierten Sicht darstellen, wird die stabile Verarbeitung zur Erstellung dieser Sichten in das Data Warehouse verschoben.For example, implementing the aggregation and join logic within a virtualization layer and displaying external reporting in a virtualized view push the robust processing required to create these views into the data warehouse.

Die Hauptgründe für die Implementierung physischer oder virtueller Data Marts sind:The primary drivers for choosing to implement physical or virtual data mart implementation are:

  • Mehr Agilität,More agility. da ein virtueller Data Mart leichter zu ändern ist als physische Tabellen und die zugehörigen ETL-Prozesse.A virtual data mart is easier to change than physical tables and the associated ETL processes.
  • Geringere Gesamtkosten aufgrund weniger Datenspeicher und Datenkopien in einer virtualisierten Implementierung.Lower total cost of ownership because of fewer data stores and copies of data in a virtualized implementation.
  • Keine zu migrierenden ETL-Aufträge und vereinfachte Data-Warehouse-Architektur in einer virtualisierten UmgebungElimination of ETL jobs to migrate and simplified data warehouse architecture in a virtualized environment.
  • Leistung.Performance. Früher waren physische Data Marts die zuverlässigere Option.Historically, physical data marts have been more reliable. Virtualisierungsprodukte implementieren jetzt intelligente Zwischenspeicherungsverfahren, um die Unterschiede auszugleichen.Virtualization products are now implementing intelligent caching techniques to mitigate this.

Sie können die Datenvirtualisierung auch verwenden, damit die Daten den Benutzern während eines Migrationsprojekts konsistent angezeigt werden.You can also use data virtualization to display data to users consistently during a migration project.

DatenzuordnungData mapping

Schlüssel- und Integritätseinschränkungen in Azure Synapse AnalyticsKey and integrity constraints in Azure Synapse Analytics

Einschränkungen für den Primärschlüssel und den Fremdschlüssel werden derzeit in Azure Synapse Analytics nicht erzwungen.Primary key and foreign key constraints aren't currently enforced within Azure Synapse Analytics. Sie können jedoch die Definition für PRIMARY KEY in der CREATE TABLE-Anweisung mithilfe der NOT ENFORCED-Klausel einschließen.However, you can include the definition for PRIMARY KEY in the CREATE TABLE statement with the NOT ENFORCED clause. Dies bedeutet, dass Berichtsprodukte von Drittanbietern die Metadaten für die Tabelle verwenden können, um die Schlüssel im Datenmodell zu verstehen und somit die effizientesten Abfragen zu generieren.This means that third-party reporting products can use the metadata for the table to understand the keys within the data model and therefore generate the most efficient queries.

Datentypunterstützung in Azure Synapse AnalyticsData type support in Azure Synapse Analytics

Einige ältere Datenbanksysteme bieten Unterstützung für Datentypen, die in Azure Synapse Analytics nicht direkt unterstützt werden.Some older database systems include support for data types that aren't directly supported within Azure Synapse Analytics. Sie können diese Datentypen jedoch verarbeiten, indem Sie einen unterstützten Datentyp zum unveränderten Speichern der Daten verwenden oder die Daten in einen unterstützten Datentyp transformieren.You can handle these data types by using a supported data type to store the data as is or by transforming the data to a supported data type.

Es folgt eine alphabetische Liste der unterstützten Datentypen:Here's an alphabetical list of supported data types:

  • bigint
  • binary [ (n) ]
  • bit
  • char [ (n) ]
  • date
  • datetime
  • datetime2 [ (n) ]
  • datetimeoffset [ (n) ]
  • decimal [ (precision [, scale ]) ]
  • float [ (n) ]
  • int
  • money
  • nchar [ (n) ]
  • numeric [ (precision [ , scale ]) ]
  • nvarchar [ (n | MAX) ]
  • real [ (n) ]
  • smalldatetime
  • smallint
  • smallmoney
  • time [ (n) ]
  • tinyint
  • uniqueidentifier
  • varbinary [ (n | MAX) ]
  • varchar [ (n | MAX) ]

In der folgenden Tabelle werden gebräuchliche Datentypen, die derzeit nicht unterstützt werden, zusammen mit der empfohlenen Vorgehensweise für die Speicherung dieser Daten in Azure Synapse Analytics aufgeführt.The following table lists common data types that aren't currently supported, together with the recommended approach for storing them in Azure Synapse Analytics.

Nicht unterstützte DatentypenUnsupported data type ProblemumgehungWorkaround
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
image varbinary
text varchar
ntext nvarchar
sql_variant Unterteilen der Spalte in mehrere Spalten mit starker TypisierungSplit column into several strongly typed columns
table Konvertieren in temporäre TabellenConvert to temporary tables
timestamp Anpassen des Codes für die Verwendung von datetime2 und CURRENT_TIMESTAMP-FunktionRework code to use datetime2 and the CURRENT_TIMESTAMP function
xml varchar
Benutzerdefinierter TypUser-defined type Rückkonvertieren in nativen Datentyp (wenn möglich)Convert back to the native data type when possible

Mögliche DatenproblemePotential data issues

Je nach Quellumgebung können bei der Datenmigration einige Probleme auftreten:Depending on the source environment, some issues can cause problems when you're migrating data:

  • Es können geringfügige Unterschiede bestehen, wie NULL-Daten in unterschiedlichen Datenbankprodukten verarbeitet werden.There can be subtle differences in the way that NULL data is handled in different database products. Beispiele hierfür sind die Sortierreihenfolge und die Verarbeitung leerer Zeichenfolgen.Examples include collation sequence and handling of empty character strings.
  • DATE-, TIME-, INTERVAL- und TIME ZONE-Daten und zugehörige Funktionen können von Produkt zu Produkt stark variieren.DATE, TIME, INTERVAL, and TIME ZONE data and associated functions can vary widely from product to product.

Testen Sie gründlich, ob diese zu den gewünschten Ergebnissen in der Zielumgebung führen.Test these thoroughly to determine whether the desired results are achieved in the target environment. Beim Migrationsdurchlauf können Fehler oder falsche Ergebnisse aufgedeckt werden, die derzeit Teil des vorhandenen Quellsystems sind. Der Migrationsprozess bietet eine gute Gelegenheit, Anomalien zu korrigieren.The migration exercise can uncover bugs or incorrect results that are currently part of the existing source system, and the migration process is a good opportunity to correct anomalies.

Bewährte Methoden für das Definieren von Spalten in Azure Synapse AnalyticsBest practices for defining columns in Azure Synapse Analytics

Ältere Systeme enthalten häufig Spalten mit ineffizienten Datentypen.It's common for older systems to contain columns with inefficient data types. Beispielsweise kann ein Feld als VARCHAR(20) definiert sein, obwohl die Datenwerte auch in ein CHAR(5)-Feld passen würden.For example, you might find a field defined as VARCHAR(20) when the actual data values would fit into a CHAR(5) field. Möglicherweise werden auch INTEGER-Felder verwendet, obwohl alle Werte in ein SMALLINT-Feld passen würden.Or, you might find the use of INTEGER fields when all values would fit within a SMALLINT field. Solche Datentypen können insbesondere bei großen Faktentabellen zu Ineffizienzen bei der Speicher- und Abfrageleistung führen.Insufficient data types can lead to inefficiencies in both storage and query performance, especially in large fact tables.

Ein Migrationsdurchlauf ist ein guter Zeitpunkt, um aktuelle Datendefinitionen zu überprüfen und zu rationalisieren.It's a good time to check and rationalize current data definitions during a migration exercise. Sie können diese Aufgaben durch SQL-Abfragen automatisieren, um den maximalen numerischen Wert oder die maximale Zeichenlänge innerhalb eines Datenfelds zu suchen und das Ergebnis mit dem Datentyp zu vergleichen.You can automate these tasks by using SQL queries to find the maximum numeric value or character length within a data field and comparing the result to the data type.

Im Allgemeinen empfiehlt es sich, die definierte Gesamtzeilenlänge für eine Tabelle zu minimieren.In general, it's a good practice to minimize the total defined row length for a table. Die beste Abfrageleistung erzielen Sie, indem Sie wie beschrieben den kleinsten Datentyp für jede Spalte verwenden.For the best query performance, you can use the smallest data type for each column, as described earlier. Der empfohlene Ansatz zum Laden von Daten aus externen Tabellen in Azure Synapse Analytics besteht in der Verwendung des Hilfsprogramms PolyBase, das eine definierte Zeilenlänge von maximal 1 MB unterstützt.The recommended approach to load data from external tables in Azure Synapse Analytics is to use the PolyBase utility, which supports a maximum defined row length of 1 megabyte (MB). PolyBase lädt nur Tabellen, deren Zeilen kleiner als 1 MB sind, und Sie müssen stattdessen das bcp-Hilfsprogrammverwenden.PolyBase won't load tables with rows longer than 1 MB, and you must use the bcp utility instead.

Für eine möglichst effiziente Joinausführung sollten Sie die Spalten auf beiden Seiten des Joins mit denselben Datentyp definieren.For the most efficient join execution, define the columns on both sides of the join as the same data type. Wenn der Schlüssel einer Dimensionstabelle als SMALLINT definiert ist, sollten die entsprechenden Verweisspalten in Faktentabellen, die diese Dimension verwenden, ebenfalls als SMALLINT definiert werden.If the key of a dimension table is defined as SMALLINT, then the corresponding reference columns in fact tables using that dimension should also be defined as SMALLINT.

Vermeiden Sie es, für Zeichenfelder eine große Standardgröße zu definieren.Avoid defining character fields with a large default size. Wenn die maximale Größe der Daten in einem Feld 50 Zeichen beträgt, verwenden Sie VARCHAR(50).If the maximum size of data within a field is 50 characters, use VARCHAR(50). Ebenso sollten Sie nicht NVARCHAR verwenden, wenn VARCHAR ausreicht.Similarly, don't use NVARCHAR if VARCHAR will suffice. NVARCHAR speichert Unicode-Daten, um unterschiedliche Sprachzeichensätze zuzulassen.NVARCHAR stores Unicode data to allow for different language character sets. VARCHAR speichert ASCII-Daten und benötigt weniger Speicherplatz.VARCHAR stores ASCII data and takes less space.

Zusammenfassung der EntwurfsempfehlungenSummary of design recommendations

Migrieren Sie keine unnötigen Objekte oder Prozesse.Don't migrate unnecessary objects or processes. Verwenden Sie ggf. integrierte Features und Funktionen in der Azure-Zielumgebung, um die tatsächliche Anzahl der zu migrierenden Objekte und Prozesse zu verringern.Use built-in features and functions in the target Azure environment where appropriate to reduce the actual number of objects and processes to migrate. Ziehen Sie die Verwendung einer Virtualisierungsschicht in Betracht, damit weniger oder gar keine physischen Data Marts migriert werden müssen und die Verarbeitung an das Data Warehouse übertragen wird.Consider using a virtualization layer to reduce or eliminate the number of physical data marts that you'll migrate and to push down processing into the data warehouse.

Automatisieren Sie den Vorgang nach Möglichkeit, und verwenden Sie Metadaten aus Systemkatalogen im Quellsystem, um DDLs für die Zielumgebung zu generieren.Automate wherever possible, and use metadata from system catalogs in the source system to generate DDLs for the target environment. Automatisieren Sie nach Möglichkeit auch das Generieren von Dokumenten.If possible, also automate generating documents. Microsoft-Partner wie WhereScape können spezielle Tools und Dienste zur Automatisierungsunterstützung bereitstellen.Microsoft partners such as WhereScape can provide specialized tools and services to assist with automation.

Führen Sie alle erforderlichen Änderungen des Datenmodells oder Optimierungen der Datenzuordnung auf der Zielplattform aus.Perform any required data model changes or data-mapping optimizations on the target platform. Diese Änderungen können Sie in Azure Synapse Analytics effizienter durchführen.You can make these changes more efficiently in Azure Synapse Analytics. Durch diese Vorgehensweise werden die Auswirkungen auf Quellsysteme verringert, die möglicherweise bereits nahezu voll ausgelastet sind.This approach reduces the impact on source systems that might already be running close to full capacity.

LeistungsoptionenPerformance options

In diesem Abschnitt werden die Features beschrieben, die in Azure Synapse Analytics zur Verbesserung der Leistung eines Datenmodells verfügbar sind.This section describes the features available within Azure Synapse Analytics that you can use to improve performance for a data model.

Allgemeiner AnsatzGeneral approach

Die Features der Plattform führen die Leistungsoptimierung für die zu migrierende Datenbank aus.The platform's features run performance tuning on the database that will be migrated. Indizes, die Datenpartitionierung und die Datenverteilung sind Beispiele für eine solche Leistungsoptimierung.Indexes, data partitioning, and data distribution are examples of such performance tuning. Wenn Sie die Migration vorbereiten, können durch das Dokumentieren von Optimierungen auch Optimierungen entdeckt und erfasst werden, die auf die Azure Synapse Analytics-Zielumgebung angewendet werden können.When you're preparing for migration, documenting the tuning can capture and reveal optimizations that you can apply in the Azure Synapse Analytics target environment.

Beispielsweise kann das Vorhandensein eines nicht eindeutigen Indexes für eine Tabelle darauf hindeuten, dass die im Index verwendeten Felder häufig zum Filtern, Gruppieren oder Verknüpfen verwendet werden.For example, the presence of a non-unique index on a table can indicate that fields used in the index are used frequently for filtering, grouping, or joining. Das ist dann auch in der neuen Umgebung noch der Fall und sollte bei der Auswahl der dort zu indizierenden Felder berücksichtigt werden.This will still be the case in the new environment, so keep it in mind when you're choosing which fields to index there. Ausführlichere Informationen zu Teradata- oder Netezza-Umgebungen finden Sie in den Artikeln zu Synapse Analytics in Azure in den Artikeln über Lösungen und Migration für Teradata und Lösungen und Migration für Netezza.For more detailed information about Teradata or Netezza environments, see Azure the Synapse Analytics articles about solutions and migration for Teradata and solutions and migration for Netezza.

Dank der Leistungsfähigkeit und Skalierbarkeit der Azure Synapse Analytics-Zielumgebung können Sie mit unterschiedlichen Leistungsoptionen wie der Datenverteilung experimentieren.Use the performance and scalability of the target Azure Synapse Analytics environment to experiment with different performance options like data distribution. Wählen Sie die besten alternativen Ansätze aus (z. B. repliziert statt hashverteilt bei großen Tabellen).Determine the best choice of alternative approaches (for example, replicated versus hash-distributed for a large dimension table). Dies bedeutet nicht, dass Daten aus externen Quellen neu geladen werden müssen.This doesn't mean that data must be reloaded from external sources. Alternative Ansätze können in Azure Synapse Analytics relativ schnell und einfach getestet werden, indem Sie Kopien einer beliebigen Tabelle über eine CREATE TABLE AS SELECT-Anweisung mit unterschiedlichen Partitionierungs- oder Verteilungsoptionen erstellen.It's relatively quick and easy to test alternative approaches in Azure Synapse Analytics by creating copies of any table with different partitioning or distribution options via a CREATE TABLE AS SELECT statement.

Verwenden Sie die Überwachungstools der Azure-Umgebung, um zu ermitteln, wie Abfragen ausgeführt werden und wo Engpässe auftreten können.Use the monitoring tools provided by the Azure environment to understand how queries are executed and where bottlenecks might be occurring. Es sind auch Tools von Microsoft-Partnern als Drittanbieter verfügbar, die Überwachungsdashboards, automatisierte Ressourcenverwaltung und Warnungen enthalten.Tools are also available from third-party Microsoft partners to provide monitoring dashboards and automated resource management and alerting.

Jeder SQL-Vorgang in Azure Synapse Analytics und Ressourcen wie dem Arbeitsspeicher oder der CPU, die von dieser Abfrage verwendet werden, wird in Systemtabellen protokolliert.Each SQL operation in Azure Synapse Analytics and resource, such as memory or the CPU used by that query, is logged into system tables. Es sind einige dynamische Verwaltungssichten verfügbar, die den Zugang zu diesen Informationen vereinfachen.A series of dynamic management views simplifies access to this information.

In den folgenden Abschnitten werden die wichtigsten Azure SQL Data Warehouse-Optionen zum Optimieren der Abfrageleistung erläutert.The following sections explain the key options within Azure SQL Data Warehouse for tuning query performance. Vorhandene Umgebungen enthalten Informationen zur möglichen Optimierung in der Zielumgebung.Existing environments will contain information about potential optimization in the target environment.

Temporäre TabellenTemporary tables

Azure Synapse Analytics unterstützt temporäre Tabellen, die nur in der Sitzung sichtbar sind, in der sie erstellt wurden.Azure Synapse Analytics supports temporary tables that are visible only to the session in which they were created. Sie bestehen für die Dauer einer Benutzersitzung und werden anschließend automatisch gelöscht.They exist for the duration of a user session and are automatically dropped at the end of the session.

Zum Erstellen einer temporären Tabelle stellen Sie dem Tabellennamen das Hashzeichen (#) voran.To create a temporary table, prefix the table name with the hash character (#). Sie können alle üblichen Indizierungs- und Verteilungsoptionen mit temporären Tabellen verwenden. Im nächsten Abschnitt wird dies beschrieben.You can use all the usual indexing and distribution options with temporary tables, as described in the next section.

Temporäre Tabellen weisen einige Einschränkungen auf:Temporary tables have some restrictions:

  • Das Umbenennen ist nicht zulässig.Renaming them isn't allowed.
  • Das Anzeigen oder Partitionieren ist nicht zulässig.Viewing or partitioning them isn't allowed.
  • Das Ändern von Berechtigungen ist nicht zulässig.Changing permissions isn't allowed.

Temporäre Tabellen werden häufig innerhalb der ETL- oder ELT-Verarbeitung verwendet, wo vorübergehende Zwischenergebnisse für Transformationsprozesse verwendet werden.Temporary tables are commonly used within ETL/ELT processing, where transient intermediate results are used as part of a transformation process.

TabellenverteilungsoptionenTable distribution options

Azure Synapse Analytics ist ein MPP-Datenbanksystem (Massively Parallel Processing), das Leistung und Skalierbarkeit durch parallele Ausführung auf mehreren Verarbeitungsknoten erreicht.Azure Synapse Analytics is an MPP database system that achieves performance and scalability by running in parallel across multiple processing nodes.

Das ideale Verarbeitungsszenario für das Ausführen einer SQL-Abfrage in einer Umgebung mit mehreren Knoten besteht darin, die Arbeitsauslastung auszubalancieren und allen Knoten eine gleich große Menge an zu verarbeitenden Daten zu übergeben.The ideal processing scenario for running an SQL query in a multinode environment is to balance the workload and give all nodes an equal amount of data to process. Mit diesem Ansatz können Sie dafür sorgen, dass weniger oder gar keine Daten zwischen Knoten verschoben werden müssen, um die Abfrage zu erfüllen.This approach also allows you to minimize or eliminate the amount of data that has to be moved between nodes to satisfy the query.

Es kann schwierig sein, das ideale Szenario zu finden, da in typischen Analyseabfragen oft Aggregationen und mehrere Joins zwischen Tabellen (z. B. zwischen Fakten- und Dimensionstabellen) vorhanden sind.It can be challenging to achieve the ideal scenario because there are often aggregations in typical analytics queries and multiple joins between several tables, as between fact and dimension tables.

Eine Möglichkeit, die Verarbeitung von Abfragen zu beeinflussen, ist die Verwendung der Verteilungsoptionen in Azure Synapse Analytics. Mit diesen können Sie angeben, wo einzelne Datenzeilen der jeweiligen Tabellen gespeichert werden.One way to influence how queries are processed is to use the distribution options within Azure Synapse Analytics to specify where each table's individual data rows are stored. Nehmen Sie beispielsweise an, dass zwei große Tabellen mit der Datenspalte CUSTOMER_ID verknüpft werden.For example, assume that two large tables are joined on the data column, CUSTOMER_ID. Wenn Sie die beiden Tabellen über die CUSTOMER_ID-Spalten verteilen, wenn dieser Join ausgeführt wird, können Sie sicherstellen, dass sich die Daten auf beiden Seiten des Joins bereits auf demselben Verarbeitungsknoten befinden.By distributing the two tables through the CUSTOMER_ID columns whenever that join is performed, you can ensure that the data from each side of the join will already be co-located on the same processing node. Dadurch müssen keine Daten zwischen Knoten verschoben werden.This method eliminates the need to move data between nodes. Die Verteilungsspezifikation für eine Tabelle wird in der CREATE TABLE-Anweisung definiert.The distribution specification for a table is defined in the CREATE TABLE statement.

In den folgenden Abschnitten werden die verfügbaren Verteilungsoptionen beschrieben, und Sie finden Empfehlungen für deren Verwendung.The following sections describe the available distribution options and recommendations for when to use them. Die Verteilung einer Tabelle kann nach dem ersten Laden bei Bedarf geändert werden. Dazu wird die Tabelle mithilfe der CREATE TABLE AS SELECT-Anweisung mit der neuen Verteilung neu erstellt.It's possible to change the distribution of a table after the initial load, if necessary: re-create the table with the new distribution by using the CREATE TABLE AS SELECT statement.

RoundrobinRound robin

Die Roundrobin-Tabellenverteilung ist die Standardoption. Hierbei werden die Daten gleichmäßig auf die Knoten im System verteilt.Round-robin table distribution is the default option and spreads the data evenly across the nodes in the system. Diese Methode eignet sich gut dafür, relativ geringe Datenmengen ohne offensichtliche Hashkandidaten schnell zu laden.This method is good for fast data loading and for data that's relatively low in volume and doesn't have an obvious candidate for hashing. Sie wird häufig für bei ETL- oder ELT-Prozessen für Stagingtabellen verwendet.It's frequently used for staging tables as part of an ETL or ELT process.

HashHashed

Das System weist die Zeile einem Hashbucket zu – einem Task, der auf einem Hashalgorithmus basiert, der auf einen benutzerdefinierten Schlüssel (wie CUSTOMER_ID im vorherigen Beispiel) angewendet wurde.The system assigns the row to a hash bucket, a task based on a hashing algorithm applied to a user-defined key like CUSTOMER_ID in the preceding example. Der Bucket wird dann einem bestimmten Knoten zugewiesen, und alle Datenzeilen, die auf denselben Wert hashverteilt sind, werden demselben Verarbeitungsknoten zugeordnet.The bucket is then assigned to a specific node, and all data rows hash-distributed on the same value end up on the same processing node.

Diese Methode eignet sich für große Tabellen, die häufig mithilfe eines Schlüssels verknüpft oder aggregiert werden.This method is useful for large tables that are frequently joined or aggregated on a key. Bei anderen großen Tabellen, die verknüpft werden sollen, sollte nach Möglichkeit ein Hash für denselben Schlüssel verwendet werden.Other large tables to be joined should be hashed on the same key if possible. Wenn mehrere Kandidaten für den Hashschlüssel vorhanden sind, wählen Sie den am häufigsten verknüpften aus.If there are multiple candidates for the hash key, choose the most frequently joined one.

Die Hashspalte sollte keine NULL-Werte enthalten und ist in der Regel keine Datumsspalte, da bei vielen Abfragen nach Datum gefiltert wird.The hash column shouldn't contain nulls and isn't typically a date because many queries filter on date. Das Hashing ist in der Regel effizienter, wenn der zu hashende Schlüssel ein Integerwert statt CHAR oder VARCHAR ist.Hashing is typically more efficient if the key to hash is an integer value instead CHAR or VARCHAR. Vermeiden Sie außerdem Schlüssel mit einem stark verzerrten Wertebereich, z. B. eine geringe Anzahl von Schlüsselwerten, die einen hohen Prozentsatz der Datenzeilen darstellen.Avoid choosing keys with a highly skewed range of values, like when a small number of key values represent a large percentage of the data rows.

ReplikationReplicated

Wenn Sie die Replikation als Verteilungsoption für eine Tabelle auswählen, wird für die Abfrageverarbeitung eine komplette Kopie dieser Tabelle auf jedem Computeknoten repliziert.Choosing replicated as the distribution option for a table will cause a complete copy of that table to be replicated on each compute node for query processing purposes.

Diese Vorgehensweise ist bei relativ kleinen Tabellen nützlich (üblicherweise weniger als 2 GB in komprimierter Form), die relativ statisch sind und häufig über einen Gleichheitsjoin mit größeren Tabellen verknüpft werden.This approach is useful for relatively small tables (typically less than 2 GB compressed) that are relatively static and frequently joined to larger tables via an equi-join. Bei diesen Tabellen handelt es sich häufig um Dimensionstabellen in einem Sternschema.These tables are often dimensional tables in a star schema.

IndizierungIndexing

Azure Synapse Analytics bietet Optionen zum Indizieren von Daten in großen Tabellen, um die Ressourcen und die Zeit zu reduzieren, die zum Abrufen von Datensätzen benötigt werden:Azure Synapse Analytics includes options for indexing data in large tables to reduce the resources and time required to retrieve records:

  • Gruppierter Columnstore-IndexClustered columnstore index
  • Gruppierter IndexClustered index
  • Nicht gruppierter IndexNon-clustered index

Eine nicht indizierte Option (HEAP) ist für Tabellen vorhanden, die keine der Indexoptionen nutzen können.A non-indexed option, HEAP, exists for tables that don't benefit from any of the index options. Die Verwendung von Indizes bedeutet eine Abwägung zwischen verbesserten Abfragezeiten und längeren Ladezeiten sowie mehr Speicherplatznutzung.Using indexes is a trade-off between improved query times versus longer load times and usage of more storage space. Indizes beschleunigen oft SELECT-, UPDATE-, DELETE- und MERGE-Vorgänge für große Tabellen, die einen kleinen Prozentsatz der Datenzeilen betreffen, und können vollständige Tabellenscans auf ein Minimum reduzieren.Indexes often speed up SELECT, UPDATE, DELETE, and MERGE operations on large tables that affect a small percentage of the data rows, and they can minimize full table scans.

Indizes werden automatisch erstellt, wenn UNIQUE- oder PRIMARY KEY-Einschränkungen für Spalten definiert werden.Indexes are automatically created when UNIQUE or PRIMARY KEY constraints are defined on columns.

Gruppierter Columnstore-IndexClustered columnstore index

Gruppierte Columnstore-Indizes sind die Standardindizierungsoption in Azure Synapse Analytics.Clustered columnstore index is the default indexing option within Azure Synapse Analytics. Sie bieten die beste Komprimierungs- und Abfrageleistung für große Tabellen.It provides the best compression and query performance for large tables. Bei kleineren Tabellen (weniger als 60 Millionen Zeilen) sind diese Indizes nicht effizient. Daher sollten Sie die HEAP-Option verwenden.For smaller tables of fewer than 60 million rows, these indexes aren't efficient, so you should use the HEAP option. Ein Heap oder eine temporäre Tabelle kann ebenso auch effizienter sein, wenn die Daten in einer Tabelle temporär und Teil eines ETL- oder ELT-Prozesses sind.Similarly, a heap or a temporary table might be more efficient if the data in a table is transient and part of an ETL/ELT process.

Gruppierter IndexClustered index

Wenn es erforderlich ist, eine einzelne Zeile oder eine kleine Anzahl von Zeilen regelmäßig aus einer großen Tabelle auf Grundlage einer starken Filterbedingung abzurufen, kann ein gruppierter Index effizienter als ein gruppierter Columnstore-Index sein.If there's a requirement to regularly retrieve a single row or small number of rows from a large table based on a strong filter condition, a clustered index might be more efficient than a clustered columnstore index. Pro Tabelle ist nur ein gruppierter Index zulässig.Only one clustered index is allowed per table.

Nicht gruppierter IndexNon-clustered index

Nicht gruppierte Indizes ähneln gruppierten Indizes insofern, dass Sie den Abruf einzelner Zeilen oder einer kleinen Anzahl von Zeilen basierend auf einer Filterbedingung beschleunigen können.Non-clustered indexes are similar to clustered indexes in that they can speed up retrieval of single rows or a small number of rows based on a filter condition. Intern werden nicht gruppierte Indizes getrennt von den Daten gespeichert, und es können mehrere nicht gruppierte Indizes für eine Tabelle definiert werden.Internally, non-clustered indexes are stored separately from the data, and multiple non-clustered indexes can be defined on a table. Jeder zusätzliche Index benötigt jedoch weiteren Speicherplatz und verringert den Durchsatz beim Einfügen oder Laden von Daten.However, each additional index will require more storage and will reduce the throughput of data insert or loading.

HeapHeap

Heaptabellen verursachen keinen Aufwand für die Erstellung und Wartung von Indizes zur Ladezeit der Daten.Heap tables incur none of the overhead associated with the creation and maintenance of indexes at data load time. Sie können das schnelle Laden temporärer Daten bei Prozessen wie ELT-Prozessen ermöglichen.They can help to quickly load transient data during processes, including ELT processes. Das Zwischenspeichern ist auch nützlich, wenn die Daten sofort gelesen werden.Caching can also assist when the data is read immediately afterward. Da gruppierte Columnstore-Indizes mit unter 60 Millionen Zeilen ineffizient sind, können Heaptabellen auch eingesetzt werden, um Tabellen mit weniger Zeilen zu speichern.Because clustered columnstore indexes are inefficient below 60 million rows, heap tables can also help to store tables with rows less than this amount.

DatenpartitionierungData partitioning

Im Data Warehouse eines Unternehmens können Faktentabellen Milliarden von Zeilen enthalten.In an enterprise data warehouse, fact tables can contain many billions of rows. Die Partitionierung ist eine Möglichkeit, die Verwaltung und Abfrage dieser Tabellen zu optimieren, indem sie aufgeteilt werden, um die Menge der beim Ausführen von Abfragen verarbeiteten Daten zu reduzieren.Partitioning is a way to optimize the maintenance and querying of these tables by splitting them into separate parts to reduce the amount of data processed when running queries. Die Partitionierungsspezifikation für eine Tabelle wird in der CREATE TABLE-Anweisung definiert.The partitioning specification for a table is defined in the CREATE TABLE statement.

Sie können nur ein Feld pro Tabelle für die Partitionierung verwenden.You can use only one field per table for partitioning. Häufig handelt es sich dabei um ein Datumsfeld, da viele Abfragen nach einem Datum oder Datumsbereich gefiltert werden.It's frequently a date field because many queries are filtered by a date or date range. Sie können die Partitionierung einer Tabelle nach dem ersten Laden bei Bedarf ändern. Dazu erstellen Sie die Tabelle mit der neuen Verteilung mithilfe der CREATE TABLE AS SELECT-Anweisung neu.You can change the partitioning of a table after initial load, if necessary, by re-creating the table with the new distribution through the CREATE TABLE AS SELECT statement.

Partitionierung zur Abfrageoptimierung: Wenn Abfragen für eine große Faktentabelle häufig nach einer bestimmten Datenspalte gefiltert werden, kann durch die Partitionierung anhand dieser Spalte die Datenmenge, die zum Ausführen der Abfragen verarbeitet werden muss, erheblich reduziert werden.Partitioning for query optimization: If queries against a large fact table are frequently filtered by a certain data column, then partitioning on that column can significantly reduce the amount of data that needs to be processed to perform the queries. Ein gängiges Beispiel ist die Verwendung eines Datumsfelds, um die Tabelle in kleinere Gruppen aufzuteilen.A common example is to use a date field to split the table into smaller groups. Jede Gruppe enthält Daten für einen einzelnen Tag.Each group contains data for a single day. Wenn eine Abfrage eine WHERE-Klausel enthält, die nach dem Datum filtert, muss nur auf die Partitionen zugegriffen werden, die dem Datumsfilter entsprechen.When a query contains a WHERE clause that filters on the date, only partitions that match the date filter need to be accessed.

Partitionierung zur Optimierung der Tabellenwartung: In Data Warehouse-Umgebungen ist es üblich, ein rollierendes Fenster detaillierter Faktendaten aufrecht zu erhalten.Partitioning for optimization of table maintenance: It's common for data warehouse environments to maintain a rolling window of detailed fact data. Ein Beispiel hierfür sind Verkaufstransaktionen, die fünf Jahre zurückgehen.An example is sales transactions that go back five years. Durch eine Partitionierung anhand des Verkaufsdatums wird das Entfernen alter Daten, die über das rollierende Fenster hinausgehen, wesentlich effizienter.By partitioning on the sales date, the removal of old data beyond the rolling window becomes much more efficient. Das Löschen der ältesten Partition geht schneller und braucht weniger Ressourcen als das Löschen jeder einzelnen Zeile.Dropping the oldest partition is quicker and uses fewer resources than deleting each individual row.

StatistikStatistics

Wenn eine Abfrage an Azure Synapse Analytics übermittelt wird, wird sie zuerst vom Abfrageoptimierer verarbeitet.When a query is submitted to Azure Synapse Analytics, it's first processed by the query optimizer. Der Optimierer bestimmt die besten internen Methoden, um die Abfrage effizient auszuführen.The optimizer determines the best internal methods to execute the query efficiently.

Zudem vergleicht der Optimierer die verschiedenen Abfrageausführungspläne, die auf Grundlage eines kostenbasierten Algorithmus verfügbar sind.The optimizer compares the various query-execution plans that are available based on a cost-based algorithm. Die Genauigkeit der Kostenschätzungen hängt von der verfügbaren Statistik ab.The accuracy of the cost estimates is dependent on the statistics available. Sie sollten deshalb dafür sorgen, dass die Statistiken auf dem neuesten Stand sind.It's a good practice to ensure that statistics are up to date.

Wenn in Azure Synapse Analytics die Option AUTO_CREATE_STATISTICS aktiviert ist, wird eine automatische Aktualisierung der Statistiken ausgelöst.In Azure Synapse Analytics, if the AUTO_CREATE_STATISTICS option is turned on, it will trigger an automatic update of statistics. Sie können Statistiken auch manuell über den Befehl CREATE STATISTICS erstellen oder aktualisieren.You can also create or update statistics manually via the CREATE STATISTICS command.

Aktualisieren Sie Statistiken, wenn sich der Inhalt erheblich geändert hat (z. B. bei einem täglichen Update).Refresh statistics when the contents have changed substantially, such as in a daily update. Diese Aktualisierung kann in einen ETL-Prozess integriert werden.This refresh can be incorporated into an ETL process.

Für alle Tabellen in der Datenbank sollten Statistiken in mindestens einer Spalte erfasst werden.All tables in the database should have statistics collected on at least one column. Dadurch wird sichergestellt, dass grundlegende Informationen wie die Zeilenanzahl und die Tabellengröße für den Optimierer verfügbar sind.It ensures that basic information such as row count and table size is available to the optimizer. Weitere Spalten, für die Statistiken gesammelt werden sollten, sind Spalten, die bei der JOIN-, DISTINCT-, ORDER BY- und GROUP BY-Verarbeitung angegeben werden.Other columns that should have statistics collected are columns specified in JOIN, DISTINCT, ORDER BY, and GROUP BY processing.

WorkloadverwaltungWorkload management

Azure Synapse Analytics enthält umfassende Features zur Verwaltung der Ressourcennutzung bei gemischten Workloads.Azure Synapse Analytics incorporates comprehensive features for managing resource utilization across mixed workloads. Das Erstellen von Ressourcenklassen für verschiedene Arbeitsauslastungen (wie Abfragen und Datenladevorgänge) ist bei der Verwaltung Ihrer Arbeitsauslastung hilfreich.Creating resource classes for different workload types, such as queries versus data load, helps you manage your workload. So werden die Anzahl gleichzeitiger Abfragen und die den Abfragen zugewiesenen Computeressourcen begrenzt.It sets limits on the number of queries that run concurrently and on the compute resources assigned to each query. Es gibt einen Kompromiss zwischen Arbeitsspeicher und Parallelität:There's a trade-off between memory and concurrency:

  • Kleinere Ressourcenklassen verringern den maximalen Arbeitsspeicher pro Abfrage, erhöhen jedoch die Parallelität.Smaller resource classes reduce the maximum memory per query but increase concurrency.
  • Größere Ressourcenklassen erhöhen den maximalen Arbeitsspeicher pro Abfrage, verringern jedoch die Parallelität.Larger resource classes increase the maximum memory per query but reduce concurrency.

Empfehlungen zur LeistungPerformance recommendations

Verwenden Sie Methoden zur Leistungsverbesserung (z. B. Indizes, Datenverteilung), um Kandidaten für ähnliche Methoden in der neuen Zielumgebung zu erfassen. Führen Sie jedoch einen Vergleichstest durch, um zu bestätigen, dass diese in Azure Synapse Analytics notwendig sind.Use performance improvement methods like indexes or data distribution to gauge candidates for similar methods in the new target environment, but benchmark to confirm that they're necessary in Azure Synapse Analytics. Fügen Sie COLLECT STATISTICS-Schritte in ETL- oder ELT-Prozesse ein, um sicherzustellen, dass die Statistiken aktuell sind, oder aktivieren Sie die automatische Erstellung von Statistiken.Build COLLECT STATISTICS steps into ETL/ELT processes to ensure that statistics are up to date, or select to automatically create statistics.

Informieren Sie sich über die in Azure Synapse Analytics verfügbaren Optimierungsoptionen und die Leistungsmerkmale zugehöriger Hilfsprogramme, z. B. PolyBase für schnelles paralleles Laden von Daten.Understand the tuning options available in Azure Synapse Analytics and the performance characteristics of associated utilities, such as PolyBase for fast parallel data loading. Verwenden Sie diese Optionen, um eine effiziente End-to-End-Implementierung zu erstellen.Use these options to build an efficient end-to-end implementation.

Nutzen Sie die Flexibilität, Skalierbarkeit und Leistungsfähigkeit der Azure-Umgebung, um Änderungen des Datenmodells oder Optionen zur Leistungsoptimierung zu implementieren.Use the flexibility, scalability, and performance of the Azure environment to implement any data model changes or performance tuning options in place. Dadurch werden die Auswirkungen auf vorhandene Quellsysteme verringert.This effort will reduce the impact on existing source systems.

Informieren Sie sich über die dynamischen Verwaltungssichten, die in Azure Synapse Analytics verfügbar sind.Understand the dynamic management views available in Azure Synapse Analytics. Diese Sichten bieten sowohl Informationen zur systemweiten Ressourcennutzung als auch zur Ausführung einzelner Abfragen.These views provide both system-wide resource utilization information and detailed execution information for individual queries.

Informieren Sie sich über Azure-Ressourcenklassen, und weisen Sie diese entsprechend zu, um eine effiziente Verwaltung gemischter Workloads und Parallelität zu gewährleisten.Understand Azure resource classes and allocate them appropriately to ensure efficient management of mixed workloads and concurrency.

Ziehen Sie die Verwendung einer Virtualisierungsschicht für die Azure Synapse Analytics-Umgebung in Erwägung.Consider using a virtualization layer as part of the Azure Synapse Analytics environment. Sie kann Änderungen an der Warehouse-Implementierung vor Geschäftskunden und Berichterstattungstools abschirmen.It can shield changes in the warehouse implementation from business users and reporting tools.

Machen Sie sich mit den von Partnern bereitgestellten Migrationstools und -diensten wie Qlik Replicate für Microsoft-Migrationen, WhereScape und Datometry vertraut.Research partner-provided migration tools and services such as Qlik Replicate for Microsoft migrations, WhereScape, and Datometry. Mit diesen Diensten können Teile des Migrationsprozesses automatisiert und die benötigte Zeit sowie das mit einem Migrationsprojekt verbundene Risiko reduziert werden.These services can automate parts of the migration process and reduce the elapsed time and risk involved in a migration project.