HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

DTS csomagok teljesítményének növelése


DTS 9. rész


Többféle tényező kihat a DTS csomagok teljesítményére. Cikkünkben sorra veszünk különféle lehetőségeket, amelyek segítségével növelhetjük a csomag lefutásának sebességét, optimalizálhatjuk a teljesítményt.

ActiveX script-ek használata
A transzformáció típusától, és a használt programnyelvtől függően egy adatpumpa folyamat, ami ActiveX script segítségével alakít át adatokat, akár kétszer, vagy még talán négyszer is lassabban futhat le, mint az általános másolási művelet.
Oszlopok azonosítása esetén sokkal gyorsabb, ha számmal hivatkozunk oszlopnév helyett:
DTSSource(1)
Használjuk a fenti formulát az alábbi helyett.
DTSSource("CustomerID")
A sebességnövekedés nem számottevő abban az esetben, ha az oszlopok száma 20-nál kevesebb, de lényeges lehet, ha az átalakítás több oszlopot használ ennél. Kevés oszlop esetén a könnyebb olvashatóság kedvéért nyugodtan használhatjuk az oszlopneveket azonosításra sebességcsökkenés nélkül.
A VBScript futása körülbelül 10 százalékkal gyorsabb a Javascript-nél. Ez utóbbihoz képest pedig a Perlscript szintén kb. 10 százalékkal marad el.
Adatpumpa teljesítménynövelés
Az adatpumpa, egy adat átalakító komponense a Transform Data task-nak és a Data Driven Query task-nak. Amikor ezen task segítségével transzformálunk adatot, akkor az alábbi esetekben növelhetünk teljesítményt:
  • Nagy mennyiségű adat esetén
  • Nagyszámú transzformáció esetén
  • Komplex script kód esetén
A teljesítmény növeléséhez ebben a szituációban használjunk many-to-many megfeleltetést, akárhányszor csak lehet. Kerüljük el a megfeleltetést egy különálló transzformációs függvénnyel minden oszlopra. A script motort nem hívja segítségül minden transzformáció. Eredményként gyorsabb teljesítményt kapunk.
A DTS Import/Export varázsló, a csomagokat many-to-many oszlopmegfeleltetéssel hozza létre. Ezzel szemben alapértelmezésben a DTS tervező egy az egyhez oszlopmegfeleltetést rendel a transzformációhoz azért, hogy az olvashatóságot növelje. Emiatt amikor DTS tervezőt használunk, gondoljuk át a megfeleltetések újraformálását many-to-many megfeleltetésekre, ahány transzformáció esetében csak lehetséges. A script-ben a sorrendiség használatával az optimalizáció sokkal jobban észrevehető, ahogy a tranzakciók száma növekszik. Általában, ha több mint 20 átalakítással dolgozunk, akkor észrevehető teljesítménybeli csökkenést tapasztalunk.
Data Driven Query Task és a Transform Data Task
Amikor az SQL szerver a beállított célállomás a Transform Data task-ban, akkor az átalakítások alapértelmezésben az IRowsetFastLoad felületet használják. Ha az SQL szerver nem az adatok célhelye, akkor a Transform Data task az IRowsetChange felületet használja (tipikusan INSERT utasítások küldésénél).
A Data Driven Query task transzformációi előkészített beillesztéseket végeznek az ICommand interfész segítségével. Ez gyorsabb lehet az IRowsetChange-nél, attól függően, hogy a cél OLE DB szolgáltató miként implementálja a felületet. Az ICommand és az IRowsetChange interfészek viszont nem mutatnak nagyobb teljesítményt az IRowsetFastLoad felületnél.
Kötegelt beillesztés, bcp
A Bulk Insert task, Transact-SQL BULK INSERT utasítást készít és futtat. Az SQL szerver OLE DB szolgáltatója által támogatott BULK INSERT lényegesen gyorsabb, mint a bcp vagy az adatpumpa használata text fájl importálásánál. Éppen ezért, ha transzformációt nem használunk, akkor maradjunk a Bulk Insert task használatánál és gyorsabb működést kapunk.
A BULK INSERT használata fájl importálására korlátozott.
Amikor adatot importálunk, a bcp és DTS másolási műveletek körülbelül ugyanolyan sebességűek, viszont amikor adatexportot végzünk, akkor a bcp folyamat gyorsasága a háromszorostól a hatszoros sebességig nőhet. A természetes bcp, ami csak SQL adatokat használ, gyorsabb a DTS adatpumpánál. BULK INSERT és a natív bcp hasonló sebességű.
Kapcsolatok használata
Az ExecuteOnMainThread tulajdonságot csak szükséges esetben használjuk (például olyan driver-ek esetében, amelyek nem szálbiztosak (thread-safe)). Mindig kerüljük el az ExecuteOnMainThread használatát ActiveX script-ekben, hogy megvalósítsuk az egybeesést, kivéve ha a csomag, vagy annak lépése tartalmaz:
  • Sorrendiség feltételeket, amelyek befolyásolhatják a DTS csomag műveleti sorrendjét.
  • Scripteket, ami Visual Basic-ben írt COM objektumokat hív meg.
  • Olyan task-okat, amelyek nem szabad szálúak.
A biztonság érdekében csak egy task használhat egy kapcsolatot egyszerre. Ahhoz, hogy párhuzamos futást tudjunk megvalósítani, használunk minden task-hoz külön kapcsolatot. Például egy adatforrás két célhelyhez kapcsolódik, és a folyamat rendszeresen lefut, akkor használjunk két ugyanolyan beállítású adatforrást, és egy forrás csak egy célhelyhez kapcsolódjon.
Ha két task összekapcsolódik egy csomag tranzakcióban és mindegyik ugyanazt az SQL szervert használja párhuzamosan, akkor a csomag futása hibával leáll.
Alapértelmezésben a maximális egyidejű lépések száma négy. Ez a MaxConcurrentSteps tulajdonsággal módosítható.
Egyéb SQL szerver megoldások használata
Egy Transact-SQL lekérdezés a leggyorsabb megoldás adatmozgatásra táblák között tranzakciók, jóváhagyások nélkül. Több adatforrás esetén gondoljuk át az elosztott lekérdezések használatát, mint pl. egy SELECT INTO utasítást.
Több csomagot használó környezetben, minden DTS csomag külön folyamatként kell fusson a dtsrun eszközt használva, vagy batch műveletként az SQL szerver Agent segítségével. Ez a DTS-t kliens folyamattá teszi. Ha nagyszámú csomagot kell szerver folyamatként futtatni (pl. 1000, vagy több darabot), akkor fontoljuk meg a replikáció használatát, ha az első másolja csak azokat az SQL szerver adatokat, amelyek változtak.
Lekérdezések teljesítményének javítása meta adatok tárházában tartott nagyméretű DTS csomagoknál
Ha a meta adattárházból kérdezünk le nagyméretű DTS csomagot, akkor jobb eredményt érhetünk el, ha növeljük a lekérdezés timeout értékét. Ez biztosítja azt, hogy a lekérdezés megtegye az oda-vissza utat a tárház adatbázishoz, ha a DTS csomag nagyméretű. Alapértelmezésben a lekérdezés timeout ideje 10 másodperc. Az alábbi registry kulcs létrehozásával tudjuk a timeout értéket beállítani:
[HKEY_LOCALMACHINE\SOFTWARE\Microsoft\Repository\Engine\ODBCQueryTimeout]
Erre a kulcsra állítsunk be az alapértelmezettnél nagyobb értéket (például 60 másodpercet, vagy annál többet). A mértékegység másodperc.

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2003 évkönyv 375. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |