Avatar billede Syska Mester
02. december 2008 - 02:02 Der er 9 kommentarer og
2 løsninger

Stored prodecure - timeout problem

Hej,

Jeg har en database på pt 10 GB, mange millioner records og andre sjovt fordelt ud over et hav at tables.

Alt data er fra nogle "servere" ... og nogen gange skal disse nulstilles, dvs alt info skal slettes fra en masse tables ...

Til formålet jeg har en simple Stored Procedure som tager et ID og så sletter alle tilhørende rækker i recursive rækkefølge. Jeg har ikke løst til at gøre det ved Cacading, da jeg eller andre måske vil kunne komme til at lave nogle frygtelige fejl.

Bliver den kørt i SSMS tager den ca. 5 mins, intet problem. Men når jeg kører den via mit console scripts som bliver kørt en gang i døgnet får jeg en SqlException: Time out ....lige meget hvad jeg gør ...

Hvorfor sker det i min app og ikke i SSMS ? Jeg er helt blank.

Jeg bruger LINQ to SQL til at kalde min SP, er det fejlen ? Hvor skal jeg lede ?

// ouT
Avatar billede coderdk Praktikant
02. december 2008 - 02:56 #1
Avatar billede aaberg Nybegynder
02. december 2008 - 08:21 #2
Det her egentligt ikke noget med spørgsmålet at gøre, men jeg reagerer lidt på, at du ikke bruger cascade deletes, fordi du er bange for at gøre fejl. Prøv at læs denne artikkel:
http://msdn.microsoft.com/en-us/library/ms190244.aspx

Her beskrives det, hvordan du genopretter en database, til hvordan den så ud på et bestemt tidspunkt. Den går ud fra at du bruger "Full recovery model", hvilket er default i SQL Server databaser. Dette er en ganske god måde, at undo fuck-ups i databasen.

:-)
Avatar billede Syska Mester
02. december 2008 - 09:42 #3
coderdk:
Kigger på det ... havde faktisk google lidt, men de fleste røg i retning af connection timeout og andre ting ... men det her giver jo lidt mening, må se om jeg kan løse det på den måde.

aaberg_cc:
Mit næste projekt er at kigge på backup ... det er pt ikke så vigtige data, men i tilfælde af det hele skulle falde sammen ville det da være rart at vide hvordan ens backup rotiner bedst muligt praktiseres, så vil kigge på cascading igen ... men ville det løse eller give bedre performance ?

og når du alligevel er inde over backup og ved du før har kommet med nogen sygt gode forklaringer på andre MSSQL releterede spm, har du et godt link? Eventuelt backup programmet til mssql ? Da jeg har læst at deres egen sutter MAX i forhold til andre betalings produkter ? eller er det kun i forhold til compression?

( Der kommer selvf flere point til )

// ouT
Avatar billede aaberg Nybegynder
02. december 2008 - 12:07 #4
Hej buzzzz,

Med hensyn til backup, tror jeg dette er et godt sted at starte:
http://msdn.microsoft.com/en-us/library/ms175477.aspx

Jeg kender ikke til andre "backup programmer", end det der er indbygget i sql serveren. Men jeg synes ikke det lyder som en god ide, at bruge 3.parts programmer til en sådan opgave. Der findes selvfølgelig mange forskellige disk-backup løsninger, men backup systemet i sql serveren er meget specialiseret til at blive brugt som database backup, og giver mange muligheder som du ikke kan få med et disk-backup værktøj. Hvis backup filerne ikke bliver komprimeret nok, kan du jo altid zippe dem.

En normal måde at håndtere backup på store databaser, er at lave hyppige differentiel backup, f.eks. hver anden time. En differentiel backup, tager kun backup af transaktioner siden sidste backup. Hver søndag aften (eller andet tidspunkt hvor serveren ikke er kraftigt belastet) kan man lave en fuld backup. For at genoprette databasen, skal du bruge den sidste fulde backup samt alle differentielle backups der er lavet efter den fulde backup.

Ved ofte at lave backups af din database, slipper du også at log filen bliver uhåndterlig stor.

Med hensyn til performance på cascade deletes, ved jeg faktisk ikke om det vil give en betydelig forbedring. Det vigtigste for mig med cascade deletes er, at når jeg sletter en entitet i basen, så hænger der ikke en masse relaterende data igen. Selvom du i dag sørger for at slette alt, kan det jo være at databasen senere skal udvides, og udvikleren ikke lige husker at tilføje nye tabeller til din stored procedure. Det bliver i hvert fald nemt rodet.
Avatar billede Syska Mester
02. december 2008 - 13:07 #5
Hej,

Jeg leger sådan privat med håndtereting af data fra www.travian.dk - de har 300 servere på verdensplan, hvilket jo giver en del data.

Jeg holder øje med en masse ting, og deraf de  mange rows. Import sker kun om morgenen 06.00 ... hvis de fejler bliver de kørt igen senere hhv 10.00 og 14.00.

Så backup ville nok være at fortrække før eventuel import ... selvom de også kører i Translog.

Grunden til at jeg spørger at jeg på et tidspunkt netop læste en SQL artikel som jeg selvf har smidt væk ... netop omkring performance, compression og usability. Da det lader til at du ved en masse om det, håbede jeg også at du kunne kaste lys netop over dette ... men da en SATA 1 TB disk ikke koster en skid idag, tror jeg ikke det er værd at kaste specielt meget efter dette.

Men jeg vil bestemt prøve at kigge på det ... og ja, så prøve at smadre min database i et testmiljø for at være sikker på at det virker ... inden det skulle gå hen og gå helt galt.

Smid svar begge 2 ...

mvh
Avatar billede coderdk Praktikant
02. december 2008 - 13:09 #6
Ok :) Fik du timeout til at fungere?
Avatar billede aaberg Nybegynder
02. december 2008 - 13:28 #7
:-)
Avatar billede Syska Mester
02. december 2008 - 14:13 #8
coderdk:
Ikke testet endnu ... skal først have backup til at virke før jeg vil teste ... men satser på det ... de symtomer som bliver beskrvet i den codeprojekt KB passer godt med hvad jeg oplever ... ligeomkring de 30 sek.

Og så skal jeg bare have den op på ca. 10 mins ... og ja, også en anden ting der faktisk kan ske at fejle nu jeg lige tænker over det ... :-) Så har faktisk måske fået løst 2 problemer ... :-)

// ouT
Avatar billede Syska Mester
02. december 2008 - 17:13 #9
Videre spm omkring backup:
http://www.eksperten.dk/spm/855012
Avatar billede Syska Mester
03. december 2008 - 20:08 #10
coderdk:
Løste problemet ... og faktisk også et andet jeg har haft ... så det kan ikke være mere end genialt :-)
Avatar billede coderdk Praktikant
03. december 2008 - 20:09 #11
Dejligt :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester