webForumDet fria alternativet

ResultSet eller Collection

2 svar · 355 visningar · startad av andreascarlsson

andreascarlssonMedlem sedan feb. 2003211 inlägg
#1

Jag har en tråd i min applikation som regelbundet (några ggr/dag) skall läsa ut url:er från databasen och sedan ansluta mot dessa.

Detta kan ju av förståeliga skäl ta lång tid (beroende på bandbredd, svarstider från servrar, osv.) Så nu undrar jag vad som är bäst ut prestanda-synpunkt?

Nu gör jag ungefär så här i min kod (pseudo-kod):

// Öppnar DB-koppling
Connection conn = new Connection();
ResultSet rs = conn.getResult("Select url from table");

while (rs.next())
{
   // Här sker nätverksaktiviteten som kan ta lång tid
}

// Stänger DB-koppling
rs.close();
conn.close();

While-satsen kan i vissa fall ta 30 min och som koden ser ut nu så låser jag upp en databaskoppling under hela denna tid.

Kan det då vara bättre att göra så här:

// Öppnar DB-koppling
Connection conn = new Connection();
ResultSet rs = conn.getResult("Select url from table");
Collection coll = new Collection();

// Spara alla url:er i ett collection-objekt
while (rs.next())
{
   coll.add(rs.get("url"));
}

// Stäng DB-koppling
rs.close();
conn.close();

// Utför det "tunga" jobbet.
for(int i=0; i<coll.size(); i++)
{
   // nätverksaktivitet.
}

Vad är skillnaden på ett ResultSet-objekt och ett Collection-objekt (förutom att ResultSet håller en DB-koppling)??

Det kan ju röra sig om väldigt många url:er och då kanske risken är att Collection-objektet blir för stort och tar för mycket ram-minne? Sparar ResultSet-objektet också ned all data lokalt eller hämtar den datat från databasen först när det behövs? Jag vill ju inte fylla upp mitt RAM-minne totalt (och därmed sega ner resten av applikationen)

Jag vill alltså hitta den snabbaste och resurssnålaste lösningen, men jag vet inte riktigt vilken metod som är bäst?? Någon som har ett förslag?? :q

juventus1Medlem sedan dec. 2000401 inlägg
#2

Använd dig av en Collection och stäng databaskopplingen så fort som möjligt. Det måste vara bra många element i en Collection innan den drar lika mycket resurser som en databaskoppling. Om du vill få bättre prestanda kan du skapa ett antal (kanske 5) trådar som bearbetar delmängder av dina url:s. Att skapa en tråd / url är inte så effektivt om du har många url:s. Mycket prestanda behöver då användas för att hålla reda på trådarna.

andreascarlssonMedlem sedan feb. 2003211 inlägg
#3

Ok! Tackar! :)

Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb