web-dev-qa-db-fra.com

SSIS VS T-SQL Rejoindre la performance, des bases de données de différence sur le même serveur

Nous recherchons la différence de performance entre la recherche SSIS et la jointure T-SQL. Nous voulons rejoindre deux tables; Les tables sont dans la même instance SQL Server, différentes bases de données.

Je soupçonne que la petite table jointe, la différence est minime ou négligeable. Dans ce cas, notre équipe préfère T-SQL, plus facile à code/script que de diagrammes d'écriture. De plus, dans le point de vue Devops, nous pouvons compiler/construire des scripts dans un projet de DB; Malheureusement, les SSIS ne compileront pas correctement T-SQL, je peux écrire "TestabCD" dans une instruction SSIS Exécutez SQL, et le projet construira/compilera toujours.

Cependant, pour un grand nombre de lignes qui prendront un traitement plus long, ce qui est plus rapide? T-SQL qui comporte des index et des statistiques, ou des SSIS qui se déroule tout en mémoire?

J'ai lu ces articles avec différents points de vue, l'équipe tente de gagner un consensus.

https://derekdb.wordpress.com/2012/03/13/ssis-lookup-or-t-sql-join/http://www.sqlservercl.com/blogs/jamesserra/2011/08/29/Quand-utiliser-T_2D00_SQL-OR-SSIS-FOR-ETL /

Supposons que le moteur T-SQL et les SSI sont fournis au même matériel: CPU et mémoire. Compte tenu des mêmes spécifications, j'aimerais connaître la vitesse de la performance sur une perspective d'algorithme interne.

1
user162241

Compte tenu des mêmes spécifications, aimerait connaître la performance

Si vos données sont sur une seule instance SQL Server, les jointures TSQL doivent toujours être plus rapides qu'une recherche sous SSIS. Ce n'est pas vraiment proche. Une requête TSQL tirera parti des index et des statistiques et l'optimiseur de requête basée sur les coûts. La jointure sera effectuée à l'intérieur de l'instance SQL Server, où elle est non seulement plus efficace, mais elle présente une plus grande mémoire et des ressources de disque qu'un pipeline SSIS.

Les recherches SSIS sont principalement destinées aux recherches de la destination, aux scénarios de données hétérogènes et aux sources sans moteur de traitement de la requête (comme des fichiers plats).

En outre, lorsque votre source de données est une seule instance SQL Server, et votre destination est une instance SQL Server (éventuellement différente), personnellement, je n'utiliserais presque jamais tout Transformations de flux de données SSIS. Au lieu de toujours utiliser SQL System SQL pour une transformation côté extrait et une étape et fusionner pour la transformation de la destination.

Je pense que vous avez mal compris le but des services d'intégration entièrement. L'utilisation des mauvais outils peut encore faire le travail, mais ce n'est pas efficace ou très sage.

Ce qui suit explique une partie du raisonnement fondamental:

Pourquoi utiliser SSIS

  1. code préemballé pour travailler avec des sources disparates (Oracle, MySQL)

  2. Idéal pour les grandes ETL entre sources hétérogènes (et super pour les grandes insertions, c'est-à-dire en vrac)

  3. Est indépendant d'une instance. Portable.

  4. Encombrant à changer de conception.

Pourquoi utiliser TSQL (procédures)

  1. Facile à changer
  2. Déclarations pré-enregistrées qui sont des séries de relevés SQL
  3. vivre à l'intérieur de l'instance. Difficile à transporter.
  4. Conçu pour les petites opérations.
1
clifton_h