webForumDet fria alternativet

Är MySQL kopplingar slöare än SQL kopplingar?

.NET

8 svar · 465 visningar · startad av lasseh79

Medlem sedan jan. 200568 inlägg
Frågan#1

Hej!!

Jag har nyligen slängt upp min första sida på nätet men jag är inte riktigt nöjd. Tycker att mina kopplingar mot min MySQL-databas tar lite för lång tid... Finns det nåt man ska tänka på för att få snabba kopplingar mot databasen? Är MySQL-databaser slöar än MSSQL?

Medlem sedan apr. 20012 266 inlägg
#2

Finns olika drivrutiner för att ansluta mot databasen, hur gör du?

Medlem sedan jan. 200568 inlägg
#3

Hej!

Jag använder mig av Bytefx dataprovider för att ansluta mig mot min databas... har en connectionsstring som jag öppnar och sen ställer jag en fråga mot databasen kopplar en datareader till den aktuella frågan och när jag är klar så stänger jag ner kopplingen mot databasen... Nu blir jag lite fundersam här.. ska man stänga ner datareadern? Jag kopplar mot databasen på 2 ställen på en sida som jag har... använder samma connectionstring på båda ställena... kan vara att det tar tid på något sätt att stänga och koppla upp igen...

Här är koden för att koppla upp mig mot min databas..
MyC.Open()
Dim MyCommand As New MySqlCommand(SQL, MyC)
Dim dr As MySqlDataReader = MyCommand.ExecuteReader
Do While dr.Read()
do some stuff
Loop
MyC.Close()

koden ligger i en try catch...

Medlem sedan juli 20011 304 inlägg
#4

Du ska alltid stänga en datareader när du är klar med den. Den håller en konstant öppen stream mot databasen så länge den är öppen...

Vad det gäller ByteFX är dom både bra och snabba så det är inte det som orsakar slöheten.

Det borde inte heller ta någon tid att öppna connection 2 gånger - särskilt inte om det är med samma connectionstring för då använder sig .net automatiskt av connection pooling.

Summa sumarum: Slöheter beror antingen på kodfel eller eventuellt om databasservern är på en annan maskin på nätverket :)

Medlem sedan jan. 200568 inlägg
#5

Stängs inte datareadern när jag försvinner ur scoopet? min databas var problemet denna gången i alla fall.. det var bara tillfälligt som den var slö hävdade dom som administrerar mysql-servern... men visst det tillhör ju god programmerings ed att stänga en datareader när man är färdig med den ;-)

Medlem sedan maj 20012 812 inlägg
#6

Stängs inte datareadern när jag försvinner ur scoopet?

Nope...

Medlem sedan juni 20008 205 inlägg
#7

Den bör stängas när kopplingen hämtas upp av GC:n, vilket kan dröja ett tag.

Medlem sedan maj 20012 812 inlägg
#8

Den bör stängas när kopplingen hämtas upp av GC:n, vilket kan dröja ett tag.

Som jag har förstått det så har tyvärr .NET lite problem med referencer till vanliga icke .NET komponenter och du kan alltså råka ut för minnesläckor om man inte explicit stänger sina kopplingar till allt vad databaser heter.

I vilket fall som helst så även om GC skulle stänga den så vet man aldrig när GC körs, det kan ta 1 sekund eller 5 timmar och under tiden så håller man en öppen koppling till databasen vilket minskar skalbarheten för applikationen.

Rekomendationer är finns det en .Close() eller .Dispose() method på ett objekt så skall man ALLTID kalla på den när man är färdig med objektet.

- M

Medlem sedan juni 20008 205 inlägg
#9

Så sant som det är sagt.

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)