Megosztás a következőn keresztül:


Adatfolyam-teljesítményfunkciók

A következőkre vonatkozik:SQL Server SSIS integrációs futtatókörnyezet az Azure Data Factoryben

Ez a témakör az Integration Services-csomagok tervezésével kapcsolatos javaslatokat tartalmaz a gyakori teljesítményproblémák elkerülése érdekében. Ez a témakör a csomagok teljesítményének hibaelhárítására használható funkciókról és eszközökről is nyújt tájékoztatást.

Az adatfolyam konfigurálása

Az adatfolyam-feladat jobb teljesítményhez való konfigurálásához konfigurálhatja a tevékenység tulajdonságait, módosíthatja a puffer méretét, és konfigurálhatja a csomagot párhuzamos végrehajtásra.

Az adatfolyam-feladat tulajdonságainak konfigurálása

Megjegyzés

Az ebben a szakaszban tárgyalt tulajdonságokat külön kell beállítani egy csomag minden adatfolyam-feladatához.

Az adatfolyam-feladat alábbi tulajdonságait konfigurálhatja, amelyek mindegyike hatással van a teljesítményre:

  • Adja meg a pufferadatok (BufferTempStoragePath tulajdonság) és a bináris nagy objektumadatokat (BLOB) tartalmazó oszlopok ideiglenes tárolásának helyét (BLOBTempStoragePath tulajdonság). Alapértelmezés szerint ezek a tulajdonságok tartalmazzák a TEMP és a TMP környezeti változók értékeit. Előfordulhat, hogy más mappákat szeretne megadni, hogy az ideiglenes fájlokat egy másik vagy gyorsabb merevlemez-meghajtóra helyezze, vagy több meghajtón terjessze el őket. Több könyvtárat is megadhat, ha pontosvesszővel tagolja a címtárneveket.

  • A DefaultBufferMaxRows tulajdonság beállításával határozza meg a tevékenység által használt puffer alapértelmezett méretét a DefaultBufferSize tulajdonság beállításával, és határozza meg az egyes pufferekben lévő sorok maximális számát. Az AutoAdjustBufferSize tulajdonság beállításával jelezheti, hogy a rendszer automatikusan kiszámítja-e a puffer alapértelmezett méretét a DefaultBufferMaxRows tulajdonság értékéből. Az alapértelmezett pufferméret 10 megabájt, a puffer maximális mérete 2^31-1 bájt. A sorok alapértelmezett maximális száma 10 000.

  • A EngineThreads tulajdonság beállításával beállíthatja, hogy a tevékenység hány szálat használjon a végrehajtás során. Ez a tulajdonság javaslatot tesz az adatfolyam-motornak a használandó szálak számáról. Az alapértelmezett érték 10, amelynek minimális értéke 3. A motor azonban nem fog több szálat használni, mint amire szüksége van, függetlenül a tulajdonság értékétől. A motor a tulajdonságban megadottnál több szálat is használhat, ha szükséges, az egyidejűségi problémák elkerülése érdekében.

  • Jelzi, hogy az adatfolyam-feladat optimalizált módban fut-e (RunInOptimizedMode tulajdonság). Az optimalizált mód javítja a teljesítményt azáltal, hogy eltávolítja a nem használt oszlopokat, kimeneteket és összetevőket az adatfolyamból.

    Jegyzet

    Az SQL Server Data Tools (SSDT) projektszintjén beállítható a RunInOptimizedMode nevű tulajdonság, amely azt jelzi, hogy az adatfolyam-feladat optimalizált módban fut a hibakeresés során. Ez a projekttulajdonság felülbírálja az adatfolyam-tevékenységek RunInOptimizedMode tulajdonságát a tervezéskor.

Pufferek méretezésének módosítása

Az adatfolyam-motor megkezdi a pufferek méretezését egyetlen adatsor becsült méretének kiszámításával. Ezután egy sor becsült méretét megszorozza a DefaultBufferMaxRows értékével, hogy meghatározza a pufferméret előzetes munkaváltozatát.

  • Ha az AutoAdjustBufferSize értéke igaz, a motor adatfolyammotorja a számított értéket használja pufferméretként, a DefaultBufferSize értékét pedig figyelmen kívül hagyja.

  • Ha az AutoAdjustBufferSize értéke hamis, a motor adatfolyam-motorja a következő szabályokkal határozza meg a puffer méretét.

    • Ha az eredmény nagyobb, mint a DefaultBufferSize értéke, a motor csökkenti a sorok számát.

    • Ha az eredmény kisebb, mint a belsőleg kiszámított minimális pufferméret, a motor növeli a sorok számát.

    • Ha az eredmény a minimális pufferméret és a DefaultBufferSize érték közé esik, a motor a lehető legközelebb méretezi a puffert a DefaultBufferMaxRows értékének becsült sorméretéhez.

Amikor megkezdi az adatfolyam-feladatok teljesítményének tesztelését, használja a DefaultBufferSize és a DefaultBufferMaxRows alapértelmezett értékeit. Engedélyezze a naplózást az adatfolyam-feladaton, és válassza a BufferSizeTuning eseményt, hogy megtekintse, hány sor található az egyes pufferekben.

Mielőtt hozzákezdene a pufferek méretezésének módosításához, a legfontosabb előrelépés az egyes adatsorok méretének csökkentése a szükségtelen oszlopok eltávolításával és az adattípusok megfelelő konfigurálásával.

A pufferek optimális számának és méretének meghatározásához kísérletezzen a DefaultBufferSize és a DefaultBufferMaxRows értékekkel a teljesítmény és a BufferSizeTuning esemény által jelentett információk monitorozása közben.

Ne növelje a puffer méretét arra a pontra, ahol a lemez lapozása elkezdődött. A lemez lapozása nagyobb teljesítményt akadályoz, mint egy nem optimalizált pufferméret. Annak megállapításához, hogy történik-e lapozás, figyelje a "Pufferek spoololva" teljesítményszámlálót a Microsoft Felügyeleti Konzol (MMC) Teljesítmény beépülő moduljában.

A csomag konfigurálása párhuzamos végrehajtáshoz

A párhuzamos végrehajtás javítja a teljesítményt a több fizikai vagy logikai processzorral rendelkező számítógépeken. A csomag különböző feladatainak párhuzamos végrehajtásának támogatásához az Integration Services két tulajdonságot használ: MaxConcurrentExecutables és EngineThreads.

A MaxConcurrentExecutables tulajdonság

A MaxConcurrentExecutables tulajdonság maga a csomag tulajdonsága. Ez a tulajdonság határozza meg, hogy hány tevékenység futtatható egyszerre. Az alapértelmezett érték -1, ami azt jelenti, hogy a fizikai vagy logikai processzorok száma plusz 2.

A tulajdonság működésének megértéséhez fontolja meg egy három adatfolyam-feladatot tartalmazó mintacsomagot. Ha MaxConcurrentExecutables értéke 3, mindhárom adatfolyam-feladat egyszerre futtatható. Tegyük fel azonban, hogy minden adatfolyam-tevékenységhez 10 forrás–cél végrehajtási fa tartozik. A MaxConcurrentExecutables 3 értékre állítása nem biztosítja, hogy az egyes adatfolyam-tevékenységek végrehajtási fái párhuzamosan fussanak.

Az EngineThreads tulajdonság

A EngineThreads tulajdonság minden adatfolyam-feladat tulajdonsága. Ez a tulajdonság határozza meg, hogy az adatfolyam-motor hány szálat hozhat létre és futtathat párhuzamosan. A EngineThreads tulajdonság az adatfolyam-motor által a forrásokhoz létrehozott forrásszálakra és a motor által az átalakításokhoz és célokhoz létrehozott munkaszálakra egyaránt érvényes. Ezért az EngineThreads 10 értékre állítása azt jelenti, hogy a motor legfeljebb tíz forrásszálat és legfeljebb tíz munkaszálat hozhat létre.

A tulajdonság működésének megértéséhez fontolja meg a mintacsomagot három adatfolyam-feladattal. Minden adatfolyam-feladat tíz forrás–cél végrehajtási fát tartalmaz. Ha minden adatfolyam-feladatnál 10-esre állítja a EngineThreads parancsot, akkor mind a 30 végrehajtási fa egyidejűleg futtatható.

Jegyzet

A szálkezelés tárgyalása túlmutat a témakör hatókörén. Az általános szabály azonban nem több szál párhuzamos futtatása, mint a rendelkezésre álló processzorok száma. A szálak közötti gyakori környezetváltás miatt a rendelkezésre álló processzorok számánál több szál futtatása akadályozhatja a teljesítményt.

Egyéni adatfolyam-összetevők konfigurálása

Ha egyéni adatfolyam-összetevőket szeretne konfigurálni a jobb teljesítmény érdekében, néhány általános útmutatást követhet. Az adatfolyam-összetevők minden típusára külön irányelvek vonatkoznak: forrás, átalakítás és cél.

Általános irányelvek

Az adatfolyam-összetevőtől függetlenül két általános útmutatást kell követnie a teljesítmény javítása érdekében: optimalizálhatja a lekérdezéseket, és elkerülheti a szükségtelen sztringeket.

Lekérdezések optimalizálása

Számos adatfolyam-összetevő használ lekérdezéseket, amikor adatokat nyernek ki forrásokból, vagy keresési műveletekben referenciatáblákat hoznak létre. Az alapértelmezett lekérdezés a SELECT * FROM <tableName> szintaxist használja. Ez a lekérdezéstípus a forrástábla összes oszlopát adja vissza. Ha a tervezéskor az összes oszlop elérhető, bármely oszlopot kiválaszthat keresési, átmenő vagy forrásoszlopként. Miután azonban kiválasztotta a használni kívánt oszlopokat, a lekérdezést úgy kell módosítania, hogy csak a kijelölt oszlopokat tartalmazza. A felesleges oszlopok eltávolítása hatékonyabbá teszi a csomagban lévő adatfolyamot, mivel kevesebb oszlop hoz létre kisebb sorokat. A kisebb sorok azt jelentik, hogy több sor is elfér egy pufferben, és minél kevesebb munka az adathalmaz összes sorának feldolgozása.

Lekérdezés létrehozásához beírhatja a lekérdezést, vagy használhatja a Lekérdezésszerkesztőt.

Jegyzet

Ha csomagot futtat az SQL Server Data Tools (SSDT) alkalmazásban, az SSIS Designer Folyamat lapja felsorolja a figyelmeztetéseket. Ezek a figyelmeztetések magukban foglalják a forrás által az adatfolyam számára elérhetővé tenni kívánt adatoszlopok azonosítását, de az alárendelt adatfolyam-összetevők ezt követően nem használják. A RunInOptimizedMode tulajdonság használatával automatikusan eltávolíthatja ezeket az oszlopokat.

Kerülje a szükségtelen rendezést

A rendezés eredendően lassú művelet, és a szükségtelen rendezés elkerülése javíthatja a csomag adatfolyamának teljesítményét.

Előfordulhat, hogy a forrásadatokat már rendezték, mielőtt egy alsóbb rétegbeli összetevő felhasználja őket. Ilyen előzetes rendezés akkor fordulhat elő, ha a SELECT lekérdezés ORDER BY záradékot használt, vagy ha az adatokat rendezési sorrendben szúrták be a forrásba. Az ilyen előre rendezett forrásadatok esetében utalhat arra, hogy az adatok rendezve vannak, és így elkerülheti a rendezési átalakítás használatát bizonyos alárendelt átalakítások rendezési követelményeinek teljesítéséhez. (Az Egyesítés és egyesítése átalakítások például rendezett bemeneteket igényelnek.) Az adatok rendezésére vonatkozó tipp megadásához a következő feladatokat kell elvégeznie:

  • Állítsa a IsSorted tulajdonságot egy adatfolyam-összetevő kimenetén a Trueértékre.

  • Adja meg azokat a rendezési kulcsoszlopokat, amelyeken az adatok rendezése történik.

További információ: Adatok rendezése az Egyesítés és egyesítési csatlakoztatás átalakításokhoz.

Ha rendeznie kell az adatokat az adatfolyamban, javíthatja a teljesítményt, ha úgy tervezi meg az adatfolyamot, hogy a lehető legkevesebb rendezési műveletet használja. Az adatfolyam például egy Multicast átalakítást használ az adathalmaz másolására. Rendezze az adathalmazt egyszer a csoportos küldésű átalakítás futtatása előtt, ahelyett, hogy több kimenetet rendeznénk az átalakítás után.

További információkért lásd: Rendezés átalakítás, Összefűzés átalakítás, Egyesítés átalakításés Csoportosítás átalakítás.

Források

OLE DB-forrás

Amikor egy OLE DB-forrást használ az adatok nézetből való lekéréséhez, válassza az "SQL-parancs" lehetőséget adatelérési módként, és adjon meg egy SELECT utasítást. Az adatok SELECT utasítással való elérése jobb teljesítményt nyújt, mint a "Táblázat vagy nézet" adatelérési mód kiválasztása.

Transzformációk

Az ebben a szakaszban található javaslatok segítségével javíthatja az Összesítés, a Homályos keresés, a Homályos csoportosítás, a Keresés, az Illesztés egyesítése és a Lassan változó dimenzióátalakítások teljesítményét.

Összesítő átalakítás

Az Összesítés átalakítás tartalmazza a Kulcsok, Kulcsskálázási, CountDistinctKeysés CountDistinctScale tulajdonságait. Ezek a tulajdonságok javítják a teljesítményt azáltal, hogy lehetővé teszik az átalakítás számára, hogy előre áthelyezze az átalakításhoz szükséges memória mennyiségét az átalakítás által gyorsítótárazott adatokhoz. Ha tudja, hogy pontosan vagy közel hány csoport várható egy csoporttól művelet alapján, állítsa be a Kulcsok és Kulcsskálázás tulajdonságait. Ha tudja, hogy pontosan vagy közelítőleg hány különböző érték várható egy Distinct count műveletből, állítsa be a CountDistinctKeys és CountDistinctScale tulajdonságokat.

Ha több aggregációt kell létrehoznia egy adatfolyamban, érdemes lehet több olyan összesítést létrehoznia, amelyek egyetlen összesítést használnak ahelyett, hogy több átalakítást hoznak létre. Ez a megközelítés javítja a teljesítményt, ha az egyik összesítés egy másik aggregáció részhalmaza, mivel az átalakítás képes optimalizálni a belső tárolót, és csak egyszer lehet beolvasni a bejövő adatokat. Ha például egy összesítés GROUP BY záradékot és AVG-aggregációt használ, az egy átalakítással kombinálva javíthatja a teljesítményt. Ha azonban több aggregációt hajt végre egy összesített átalakításon belül, szerializálja az aggregációs műveleteket, ezért előfordulhat, hogy nem javítja a teljesítményt, ha több aggregációt egymástól függetlenül kell kiszámítani.

Fuzzy Lookup és Fuzzy Grouping transzformációk

A Fuzzy Lookup és a Fuzzy Grouping transzformációk teljesítményének optimalizálásáról további információt az SQL Server Integration Services 2005-ben Fuzzy Lookup és Fuzzy Grouping in SQL Server Integration Services 2005című tanulmány tartalmaz.

Keresési átalakítás

A memóriában lévő referenciaadatok méretének minimalizálásához írjon be egy SELECT utasítást, amely csak a szükséges oszlopokat keresi meg. Ez a beállítás jobban teljesít, mint egy teljes táblázat vagy nézet kiválasztása, amely nagy mennyiségű szükségtelen adatot ad vissza.

Összevonó csatolás transzformálása

A továbbiakban nem kell konfigurálnia a MaxBuffersPerInput tulajdonság értékét, mert a Microsoft olyan módosításokat hajtott végre, amelyek csökkentik annak kockázatát, hogy az egyesítési csatlakozás átalakítás túlzott memóriát fog használni. Ez a probléma néha előfordult, amikor az egyesítési illesztés több bemenete egyenetlen sebességgel állított elő adatokat.

Lassan változó dimenzióátalakítás

A Lassan változó dimenzió varázsló és a Lassan változó dimenzió átalakítás olyan általános célú eszközök, amelyek megfelelnek a legtöbb felhasználó igényeinek. A varázsló által létrehozott adatfolyam azonban nem a teljesítményre van optimalizálva.

A Lassan változó dimenzió átalakítás leglassabb összetevői általában azok az OLE DB-parancsátalakítások, amelyek upDATE-ket hajtanak végre egyszerre egyetlen sorban. Ezért a lassan változó dimenzióátalakítás teljesítményének javításának leghatékonyabb módja az OLE DB-parancs transzformációinak cseréje. Ezeket az átalakításokat olyan célösszetevőkre cserélheti, amelyek az összes sort mentik egy átmeneti táblába a frissítéshez. Ezután hozzáadhat egy végrehajtási SQL-feladatot, amely egyetlen készletalapú Transact-SQL UPDATE-et hajt végre az összes sorban egyszerre.

A haladó felhasználók egyéni adatfolyamot tervezhetnek a nagy méretekre optimalizált, lassan változó dimenziófeldolgozáshoz. Erről a megközelítésről az "Egyedi dimenzióforgatókönyv" című szakaszban Project REAL: Business Intelligence ETL tervezési eljárásokcímű tanulmányban olvashat.

Célpontok

Ha a célhelyekkel jobb teljesítményt szeretne elérni, fontolja meg egy SQL Server-célhely használatát és a cél teljesítményének tesztelését.

SQL Server célhely

Ha egy csomag adatokat tölt be egy ugyanazon a számítógépen található SQL Server-példányba, használjon SQL Server-célhelyet. Ez a cél nagy sebességű tömeges terhelésekhez van optimalizálva.

A célhelyek teljesítményének tesztelése

Előfordulhat, hogy az adatok célhelyekre történő mentése a vártnál több időt vesz igénybe. Annak megállapításához, hogy a lassúságot az okozza-e, hogy a cél nem tudja elég gyorsan feldolgozni az adatokat, ideiglenesen lecserélheti a célt egy Sorok számlálása átalakításra. Ha az átviteli sebesség jelentősen javul, valószínű, hogy az adatokat betöltő célhely okozza a lassulást.

Tekintse át a Folyamat lap információinak áttekintését

Az SSIS Designer az SQL Server Data Tools (SSDT) csomagjának futtatásakor a vezérlőfolyamatról és az adatfolyamról is nyújt információkat. A Folyamat lapon a tevékenységek és tárolók végrehajtási sorrendben jelennek meg, és az egyes tevékenységekhez és tárolókhoz tartozó kezdési és befejezési időpontokat, figyelmeztetéseket és hibaüzeneteket tartalmazzák, beleértve magát a csomagot is. Emellett felsorolja az adatfolyam-összetevőket a végrehajtás sorrendjében, és tartalmazza az előrehaladással kapcsolatos információkat, amelyek százalékos készültségként jelennek meg, valamint a feldolgozott sorok számát.

Ha engedélyezni vagy letiltani szeretné az üzenetek megjelenítését a Állapot lapon, kapcsolja be a Hibakeresési állapotjelentés beállítást az SSIS menüben. Az állapotjelentés letiltása segíthet a teljesítmény javításában egy összetett csomag SQL Server Data Tools-ban való futtatása közben.

cikkek és blogbejegyzések

videók

Lásd még:

Eszközök csomagfejlesztési hibaelhárításhoz
csomagvégrehajtási hibaelhárítási eszközei