12. juni 2002 - 19:02Der er
8 kommentarer og 3 løsninger
hurtig insert
Jeg har en applikation som indsætte op til flere hundrede gange i træk i samme tabel. Det tager meget langt tid med flere SQL sætninger. Kan jeg ikke gøre det på en gang med SQL server 2000 ?
Det burde hjælpe - det er jo en caching af operationer som bliver optimeret før udførslen. Det er rimeligt let at implementere - så jeg kan kun anbefale at du prøver det.
En transaktion giver IKKE noget! Det eneste en transaktion gør er at holde styr på det der er ved at blive indsat.. ikke andet. En prepared statement er compilet, så i efterfølgende inserts, er det kun nødvendigt at overføre data. Et andet 'trix' er også at lave fx: sp_insertdata 'data1', 'data2';sp_insertdata 'data3', 'data4' osv....
Så minimerer man den tid det tager at initiere forbindelsen fra VB til databasen. Bemærk at man kun kan sende 8000 (så vidt jeg husker) karakterer med en almindelig statement i ado...
stigc > nop. Transaktionen GARANTERER at alt det du har gjort inde i transaktionen bliver udført eller ikke udført, så hvis du laver f.eks. 3 statements, kan du efterfølgende vælge at COMMITe eller ROLLBACKe den transaktion der er tale om. Dette er ekstra resourcer da serveren så skal holde styr på de ændringer der er foretaget ind til der committes eller bliver lavet rollback, og derfor kan jeg ikke se andet end at det må være langsommere. Og bare sårn i al almindelighed, så er Stored Procedures hurtigst. Serveren har så nemlig mulighed for at 'smage' på den logik der er i den stored procedure, og derfor udføres de hurtigere end almindelige queries.
Just4Fun> Det er altså ikke rigtigt at transaktioner "bare" giver en garanti for at alle statements bliver udført. Det sikrer nemlig også at optimizeren i SQL Server ved hvad der vil ske gennem hele transaktionen - det giver en forbedring af performance. Bagsiden af medaljen er at du genererer "locks" når tingene foregår i transaktioner... det vil sige at det går ud over den overordnede performance hvis der laves lange transaktioner mens andre processer kører.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.