- Android másképp: Lineage OS és társai
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- bambano: Bambanő háza tája
- Gurulunk, WAZE?!
- VoidXs: Tényleg minden játék optimalizálatlan?
- erkxt: A Roidmi becsődölt – és senki nem szól egy szót sem?
- Viber: ingyen telefonálás a mobilodon
- sziku69: Fűzzük össze a szavakat :)
Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
leslie23 #9798 üzenetére
Alternatív megoldásként felmerült, hogy a parallel végrehajtásnál csak egy DataSetben tárolnám a lekérdezések eredményeit, majd ezt követően egy külön műveletben sorosan generálnám le az Excel-riportokat.
Igen, érdemes kódban is elkülöníteni az egymástól nagyon különböző feladatok megvalósítását. Ezzel a hibák kezelését könnyíteni tudod.
Fogod a Parallel.Forech-edet és ahelyett hogy az abban levő kód (delegate) csinálja a az SQL lekérdezést ÉS az Excel interop hívását:
A Parallel.Foreach csinálja csak
-1. az SQL lekérdezést /ahogyan eddig/, az adatok esetleges modellekbe való transzformálását,
-2. majd az eredmények összefésülését. <= ennek thread safnek kell lennie.A 2.-höz használhatsz BlockingCollection<T>-t ami thread safe. A ForEach által futtatott kód az SQL lekérdezés eredményét kiszedi a readerből, opcionálisan áttranszformálja valami modellbe (ez a "T") majd ezt beszúrja a BlockingCollection<T>-be.
A Parallel.Foreach futása után egyetlen szálon végigiterálsz a A BlockingCollection-ön és feldolgozod a kinyert és összefésült adatokat => meghívod egyenként az Excel interopodat minden egyes adatelemre.
-
sztanozs
veterán
válasz
leslie23 #9798 üzenetére
COM-ot nem fogsz tudni parallelizálni szerintem, Excel COM csak egy instance-el dolgozik, össze fog akadni biztosan.
Az adatbázis más kérdés, de ha feldolgozási oldalon van a probléma, akkor nem fogsz nagyobb telejsítményt kisajtolni belőle így sem.Amúgy adatbázisban legtöbbször az a gond (INSERT-nél), hogy egyesével viszik fel a rekordokat, így minden utasítás külön tranzakció, és baromi nagy az overhead. Ha fel tudod vinni ezresével, vagy az egészet egszerre, akkor sokkal gyorsabb lesz már ettől is.
-
martonx
veterán
válasz
leslie23 #9798 üzenetére
Manapság, amikor a gépeknek van minimum 8GB ramja, szerintem semmi se akadályoz meg abban, hogy ramban tárold, amit csak tudsz. Mi lehet a legrosszabb, ami történik? A winforms appod memória használata felmegy 1-2GB-ig? Na ügy
Az első kérdésedre elég egyértelmű, hogy mi történik. Ha nincs a connection stringben a timeout beállítva, akkor a default azt hiszem 30s.
Azt írod, hogy ezek egyenként 5-15 másodpercesek. Igen ám, de nem nehéz belátni, hogy ha ilyen queryből futtatsz 15-öt párhuzamosan, akkor szegény DB szervernek sem 5-15 másodpercébe fog kerülni egyet-egyet végrehajtani, hanem ki tudja mennyivel többe (SQL szerver erőforrásaitól függ). Ergo simán elérheti a 30 másodpercet is 1-1 lekérdezés ideje, és voilá, máris kapod a hiba üzenetet. Legalábbis szerintem ez történik, és ezért is javul meg, amikor connection stringben belefoglalod a korlátlan timeout időt. Vagy egyszerűen csak megölöd a DB-t, és timeout időn belül még új connectiont létrehozni sem sikerül felé.
Biztos, hogy valami ilyesmi lesz a problémád forrása.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- HiFi műszaki szemmel - sztereó hangrendszerek
- Windows 11
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Steam Deck
- Android másképp: Lineage OS és társai
- Milyen légkondit a lakásba?
- AMD Navi Radeon™ RX 6xxx sorozat
- Mibe tegyem a megtakarításaimat?
- Megérkezett a Google Pixel 7 és 7 Pro
- További aktív témák...
- INGYEN POSTA - ÚJ GAMER PC - i5-10400F - RTX 3060 12GB - 16GB RAM - 1TB SSD - www.olcsogamerpc.hu
- Pc kompletten
- Apple iPhone 8 64GB Kártyafüggetlen 1Év Garanciával
- Lenovo ThinkPad T570, T580, P51s, P52s eredeti Lenovo, külső akkumulátor eladó
- Latitude 5450 27% 14" FHD IPS Ultra 5 135U 16GB 512GB NVMe magyar vibill gar
- Újra Akcióban!!! Ducky One 2 Mini és SF billentyűzetek a bolti ár töredékéért! Számla+Gari
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RTX 4060 8GB GAMER PC termékbeszámítással
- AKCIÓ! MSI Z790 i5 14600KF 64GB DDR5 512GB SSD RTX 3070 8GB Rampage SHIVA Enermax 750W
- Csere-Beszámítás!AMD Asztali számítógép PC Játékra! R5 5600/ RX 6700XT 12GB / 16GB DDR4 / 500GB SSD
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest