[.NET] Update MS SQL database gaat zeer traag

Pagina: 1
Acties:

  • Xenan
  • Registratie: Augustus 2003
  • Laatst online: 27-11 23:27

Xenan

Tree-of-life

Topicstarter
Ik heb een applicatie gemaakt die CSV bestanden inleest, verwerkt en in tabellen zet. Daarvoor wordt er een dataSet aangemaakt en dataTables. De hoofdtabel wordt ongeveer 45000 records groot. Vervolgens wil ik de tabellen in een database zetten op een MS SQL server. Op de MS SQL server is een database aangemaakt met de juiste schema enzovoorts.

Het vullen van de database gaat via:

dbadapter.Update(dataset, tabelnaam);

Dit updaten duurt vele, vele uren.

Nu mijn vraag: is het normaal dat het zo lang duurt? (lijkt me van niet).
Wat kan er mis zijn? Tips om het te versnellen? Aan de programmacode kan ik toch niets veranderen: dat is maar één instructie.

De MS SQL server is een ontwikkelaarsversie die op de lokale PC staat. De PC heeft genoeg geheugen (1,5 GB).

Canon EOS 350D | EF-S 18-55mm | EF-S 60mm f/2.8 USM Macro | EF 70-300mm f/4-5.6 IS USM


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 30-11 08:58

wizzkizz

smile...tomorrow will be worse

Het lijkt me dat je hier eerder in ordegroote van minuten zou moeten denken dan van uren (normaal gesproken).

Zomaar wat ideetjes:

Probeer nauwkeurig te achterhalen waar de bottleneck precies zit door timers te gebruiken.

Weet je zeker dat het aan het updaten van de database ligt en niet al eerder, bij het verwerken van de csv-data? (Dan duurt het nog belachelijk lang voor maar 45000 entries.) Probeer eens de csv om te zetten in sql-statement(s) en dan direct in de database manager (ben ff de naam daarvan kwijt) de statements te executen.

Heb je veel indices op je tabel staan (scheelt behoorlijk bij updaten)?

Monitor de belasting van je proggie eens in een taskmanager.

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • Xenan
  • Registratie: Augustus 2003
  • Laatst online: 27-11 23:27

Xenan

Tree-of-life

Topicstarter
Het ligt aan het updaten van de database. De CSVs worden in een veel eerder stadium verwerkt (is extern aangeleverde data met veel vervuiling en dubbelingen en die schoon ik eerst).

In ieder geval weet ik nu dat het niet normaal is en dat ik verder moet zoeken.

Er is één index en dat is de primaire sleutel.

Canon EOS 350D | EF-S 18-55mm | EF-S 60mm f/2.8 USM Macro | EF 70-300mm f/4-5.6 IS USM


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Run eens de profiler tijdens het inladen van die gegevens in de SQL Server DB.

https://fgheysels.github.io/


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:27

mulder

ik spuug op het trottoir

Heb je al eens naar BULK INSERT gekeken?

oogjes open, snaveltjes dicht


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Of naar de 'Import Data... ' Task die SQL Server biedt om CSV files in te laden. :P

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
nou normaal is het zeker niet, ik insert 10,000 rows in 5 a 6 seconden.
Wat wellicht de oorzaak is:
- de data file is te klein en om de zoveel inserts wordt deze opgerekt, dit kost echt veel tijd
- de complete insert van alle data loopt in 1 transaction. Dit kan ook traag zijn wanneer de transaction log file erg klein is.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Nog een paar mogelijkheden:
- Heb je geen triggers op die tabel staan?
- Kijk eens of het zin heeft om alle FK constraints te disablen die gebruikt worden tijdens zo'n insert.Kan een hoop FK checks aan de DB-kant schelen.
- Ligt het niet aan het aantal roundtrips tussen de applicatie en de DB?
- Probeer (toch) eens om de memory footprint van je .NET applicatie terug te brengen, bijvoorbeeld door een kwart van de data in te laden. Het kan zijn dat elke keer net het verkeerde stuk geheugen weg wordt geswapt omdat er ruimtegebrek is.

[ Voor 10% gewijzigd door MrBucket op 28-03-2007 17:59 ]

Pagina: 1