T-SQL

Paralelní INSERT… SELECT

SQL Server 2016 přináší nově paralelní vykonání INSERT…SELECT kombinace, které za určitých okolností představuje výrazné (10x a více) zlepšení výkonu pro některé typické ETL scénáře. Aby mohl být použit paralelní operátor, musí být splněny především dvě podmínky:

  1. level kompatibily databáze musí být nastaven na 130 a
  2. je nutné použít TABLOCK hint pro cílovou tabulku.

Zda byl skutečně použit paralelní operátor zjistíme jednoduše z exekučního plánu.

Bohužel jako obvykle existuje několik výrazných omezení, která nám prvotní radost mohou zkazit. Paralelní exekuce se nedočkáme pokud:

  • při insertu do row store cílová tabulka obsahuje clusterovaný nebo alespoň jeden neclusterovaný index
  • tabulka má IDENTITY sloupec nebo využívá sekvence

Zvláštní pravidla platí v případě, využíváme-li jako cíl (INSERT) nebo zdroj (SELECT) column store úložiště.

Detaily:

Poznámka:

Nezaměňovat INSERT…INTO se SELECT…INTO, který podporuje paralelní exekuční plány již od SQL Serveru 2014 (compatibility 110 a vyšší).

Leave a Reply

Your email address will not be published. Required fields are marked *