webForumDet fria alternativet

Stora mängder data i gridview med paging?

.NET

4 svar · 283 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

1. Hurvida är det effektivt att använda gridviewns inbyggda paging om man skall hantera större datamängder? Finns det bättre sätt att hämta datan då?

2. Hur manipulerar jag med gridviewns sätt att göra pagingen på?
Jag skulle vilja ha den enligt detta mönster. ex.
Första Backa 4 5 6 7 8 9 10 11 12 13 Nästa Sista

Alltså att de 10 närmsta sidorna visas i "footer/paging-listen"?

Medlem sedan maj 20012 812 inlägg
#2

travoni skrev:

1. Hurvida är det effektivt att använda gridviewns inbyggda paging om man skall hantera större datamängder? Finns det bättre sätt att hämta datan då?

Det är svårt att svara på, det beror på var du har din flaskhals. Om du har en FET lina, men en långsam databas och lite minne på din server, så jag då är det optimal att skicka informationen fram och tillbaka.

Om du har en långsam lina och en snabb databas eller mycket minne på din server så är lösningen helt förkastlig, om man nu inte är lat och bara kör på i MS klicka-gissa-spring värld....

Jag kan se 2 alternativ som jag skulle använt mig av först.
1. Jag skulle endast hämta upp den datan som krävs för min paging att fungerar, alltså om jag endast skall visa 10 poster, varför i all världen skall jag då hämta 10.000 från databasen och sedan bara ha 9990 poster liggandes i viewstaten / minnet. Denna lösning kom dock att belasta din databas mer eftersom du vid varje sidvisning kommer att fråga databasen efter ny data.

2. Hämta alla 10.000 raderna och lägg i cachen på din server, du kommer nu vid varje sidvisning att hämta och visa 10 poster av de 10.000 som finns i din cache, du spara alltså din databas för onödiga frågor och spara din lina genom att din viewstate blir mindre. Tyvärr så kräver du att din server har mycket minne.

Så istället för att ge dig ett svar så skall jag ge dig ett argument:
Om din datamängd är liten (som du vill pagea på) och din lina är fet, så lägg den i viewstaten.
Om din datamängd är stor och kan delas av många användare, så lägg den i cachen och hämta ut dina delposter därifrån.
Om din datamängd är stor och kommer att vara olika för de olika användarna så hämta bara ut den data som du behöver från databasen varje gång.

Som du säkert förstått så finns det inget generellt svar på din fråga och svaret är att du får testa dig fram vad som passar bäst för din applikation och dina förutsättningar.

- M

Medlem sedan dec. 19996 522 inlägg
#3

Kör du MSSQL 2005 ? Annars var gladhs svar utömmande

Medlem sedan okt. 20041 556 inlägg
#4

MSDB är mySql

Skulle man kunna ha olika metoder beroende på hur många poster som skall hämtas alltså?

Det är ju genialt.

Scenario:
Låt säga att det bara är 100-1000 poster i resultatet -> lägg allt i cachen
Är det fler kör mot databas varje sidvisning.

Medlem sedan maj 20012 812 inlägg
#5

Travoni skrev:

Scenario:
Låt säga att det bara är 100-1000 poster i resultatet -> lägg allt i cachen
Är det fler kör mot databas varje sidvisning.

Hur stora är dina poster? Är de på 10bytes, eller på 1 MB stycket?. Hur snabb är din lina ut från server, vilken lina sitter dina besökare på? Hur snabb är din databas? Har du mycket annan databastrafik på den? Hur mycket minne har din server? Är prestanda viktigare än korrektdata?

Som du säkert förstår så FINNS DET INGET generellt svar på din fråga, utan man måste ta hänsyn till alla ovanstående punkter innan man funderar på vilken lösning som man vill använda sig av, och sedan så måste man testa sin lösningen för att se var flaskhalsen finns.

tyvärr, önskar det fanns ett korrekt svar på din fråga, men det gör det inte...

- M

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)