/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MySQL] For mange forespørgsler
Fra : Dennis Helligsø


Dato : 16-02-01 09:41

Hejsa.

Jeg har en tabel. Denne tabel bliver opdateret hvert 10. sekund (det er et
bingo spil, hvor numrene bliver lagt i en database). Output fra denne tabel
er:

[ID] [Nummer]
1 12
2 61
3 81
4 5
osv...

Feltet bliver som sagt opdateret hvert 10. sekund med et fortløbende ID og
et nyt tilfældigt tal.
Mit problem er så, at når brugerne/spilleren skal have hevet disse nye tal
ud fra tabellen, at jeg så havde forestillet mig, at forespørge på tabellen
hvert 5. sekund - men jeg kan udemærket godt selv se, at hvis alle brugere
(lad os sige 20-50 brugere samtidigt) allesammen forespørger på tabellen
hvert 5. sekund, at det vil give ret mange forespørgsler på databasen!?

Men ehh.... jeg synes ikke rigtigt at kunne se andre løsninger? Håber der er
én (eller flere) der er lidt mere klartsynene end jeg er

--
Mvh.
Dennis



 
 
Soren 'Disky' Reinke (16-02-2001)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 16-02-01 09:47


"Dennis Helligsø" <net87@mail.mira.dk> wrote in message
news:WJ5j6.34$i%3.2003@news.get2net.dk...
> Hejsa.
>
> Jeg har en tabel. Denne tabel bliver opdateret hvert 10. sekund (det er et
> bingo spil, hvor numrene bliver lagt i en database). Output fra denne
tabel
> er:
>
> [ID] [Nummer]
> 1 12
> 2 61
> 3 81
> 4 5
> osv...
>
> Feltet bliver som sagt opdateret hvert 10. sekund med et fortløbende ID og
> et nyt tilfældigt tal.
> Mit problem er så, at når brugerne/spilleren skal have hevet disse nye tal
> ud fra tabellen, at jeg så havde forestillet mig, at forespørge på
tabellen
> hvert 5. sekund - men jeg kan udemærket godt selv se, at hvis alle brugere
> (lad os sige 20-50 brugere samtidigt) allesammen forespørger på tabellen
> hvert 5. sekund, at det vil give ret mange forespørgsler på databasen!?

Hvis din database ikke kan håndtere det, skulle du tage og skifte den ud.

Hvad med at cache data udenfor basen ?

>
> Men ehh.... jeg synes ikke rigtigt at kunne se andre løsninger? Håber der
er
> én (eller flere) der er lidt mere klartsynene end jeg er

Hvad bruger du af database ?

--
With many Thanks
Soren ' Disky ' Reinke ICQ #1413069 remove 'ihsyd' when email replying
Please visit my Freshwater Aquaria Webpage
http://www.disky-design.dk/fish



Dennis Helligsø (16-02-2001)
Kommentar
Fra : Dennis Helligsø


Dato : 16-02-01 10:06

> > Feltet bliver som sagt opdateret hvert 10. sekund med et fortløbende ID
og
> > et nyt tilfældigt tal.
> > Mit problem er så, at når brugerne/spilleren skal have hevet disse nye
tal
> > ud fra tabellen, at jeg så havde forestillet mig, at forespørge på
> tabellen
> > hvert 5. sekund - men jeg kan udemærket godt selv se, at hvis alle
brugere
> > (lad os sige 20-50 brugere samtidigt) allesammen forespørger på tabellen
> > hvert 5. sekund, at det vil give ret mange forespørgsler på databasen!?

> Hvis din database ikke kan håndtere det, skulle du tage og skifte den ud.

Den kan sikkert også godt klare det, men jeg synes umuligt det kan være
optimalt at gøre det på den måde?

> Hvad med at cache data udenfor basen ?

Hvorledes mener du - i en fil? Shared memory?

> > Men ehh.... jeg synes ikke rigtigt at kunne se andre løsninger? Håber
der
> er én (eller flere) der er lidt mere klartsynene end jeg er

> Hvad bruger du af database ?

MySQL v3.23.32.

--
Mvh.
Dennis




Soren 'Disky' Reinke (16-02-2001)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 16-02-01 10:22


"Dennis Helligsø" <net87@mail.mira.dk> wrote in message
news:X46j6.44$i%3.2732@news.get2net.dk...
> > > Feltet bliver som sagt opdateret hvert 10. sekund med et fortløbende
ID
> og
> > > et nyt tilfældigt tal.
> > > Mit problem er så, at når brugerne/spilleren skal have hevet disse nye
> tal
> > > ud fra tabellen, at jeg så havde forestillet mig, at forespørge på
> > tabellen
> > > hvert 5. sekund - men jeg kan udemærket godt selv se, at hvis alle
> brugere
> > > (lad os sige 20-50 brugere samtidigt) allesammen forespørger på
tabellen
> > > hvert 5. sekund, at det vil give ret mange forespørgsler på
databasen!?
>
> > Hvis din database ikke kan håndtere det, skulle du tage og skifte den
ud.
>
> Den kan sikkert også godt klare det, men jeg synes umuligt det kan være
> optimalt at gøre det på den måde?
>
> > Hvad med at cache data udenfor basen ?
>
> Hvorledes mener du - i en fil? Shared memory?

F.eks. i et array i hukommelsen

>
> > > Men ehh.... jeg synes ikke rigtigt at kunne se andre løsninger? Håber
> der
> > er én (eller flere) der er lidt mere klartsynene end jeg er
>
> > Hvad bruger du af database ?
>
> MySQL v3.23.32.

Den skulle gerne kunne klare det.

--
With many Thanks
Soren ' Disky ' Reinke ICQ #1413069 remove 'ihsyd' when email replying
Please visit my Freshwater Aquaria Webpage
http://www.disky-design.dk/fish



Dennis Helligsø (16-02-2001)
Kommentar
Fra : Dennis Helligsø


Dato : 16-02-01 10:48

> > > Hvad med at cache data udenfor basen ?

> > Hvorledes mener du - i en fil? Shared memory?

> F.eks. i et array i hukommelsen

Ikke muligt - jeg må ikke bruge shared memory (kompabillitets problemer
imellem Unix/Windows).

> > > Hvad bruger du af database ?

> > MySQL v3.23.32.

> Den skulle gerne kunne klare det.

Jo, ved jeg også godt at den kan - altså at den kan lade sig gøre (gør det
allerede på den måde). Det er blot et spørgsmål om kraftigt nok hardware
samt en tilpas stor linie - men det var nu mere for, at jeg ikke synes det
er optimalt (endsige slet ikke smart), at gøre det på den måde. Lad os sige,
at der en dag kom 500 samtidige brugere på - you see...

--
Mvh.
Dennis



Soren 'Disky' Reinke (16-02-2001)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 16-02-01 11:17


"Dennis Helligsø" <net87@mail.mira.dk> wrote in message
news:EI6j6.55$i%3.3046@news.get2net.dk...
> > > > Hvad med at cache data udenfor basen ?
>
> > > Hvorledes mener du - i en fil? Shared memory?
>
> > F.eks. i et array i hukommelsen
>
> Ikke muligt - jeg må ikke bruge shared memory (kompabillitets problemer
> imellem Unix/Windows).
>

Hvad bruger du af sprog ?

> > > > Hvad bruger du af database ?
>
> > > MySQL v3.23.32.
>
> > Den skulle gerne kunne klare det.
>
> Jo, ved jeg også godt at den kan - altså at den kan lade sig gøre (gør det
> allerede på den måde). Det er blot et spørgsmål om kraftigt nok hardware
> samt en tilpas stor linie - men det var nu mere for, at jeg ikke synes det
> er optimalt (endsige slet ikke smart), at gøre det på den måde. Lad os
sige,
> at der en dag kom 500 samtidige brugere på - you see...

Ja okay, ikke optimalt.

--
With many Thanks
Soren ' Disky ' Reinke ICQ #1413069 remove 'ihsyd' when email replying
Please visit my Freshwater Aquaria Webpage
http://www.disky-design.dk/fish



Dennis Helligsø (16-02-2001)
Kommentar
Fra : Dennis Helligsø


Dato : 16-02-01 11:43

> > > > > Hvad med at cache data udenfor basen ?
> > > > Hvorledes mener du - i en fil? Shared memory?
> > > F.eks. i et array i hukommelsen

> > Ikke muligt - jeg må ikke bruge shared memory (kompabillitets problemer
> > imellem Unix/Windows).

> Hvad bruger du af sprog ?

Du har allerede svaret mig i serverside-gruppen Det er PHP (og Unix). Og
shared memory kan man ikke benytte på Windows platformen (hvilket spillet
måske skal portes til). Men ehh.. mere snak om det i serverside-gruppen

FUT dk.edb.internet.webdesign.serverside

--
Mvh.
Dennis



Kristian Damm Jensen (16-02-2001)
Kommentar
Fra : Kristian Damm Jensen


Dato : 16-02-01 12:19



"Dennis Helligsø" wrote:
>
> Hejsa.
>
> Jeg har en tabel. Denne tabel bliver opdateret hvert 10. sekund (det er et
> bingo spil, hvor numrene bliver lagt i en database). Output fra denne tabel
> er:
>
> [ID] [Nummer]
> 1 12
> 2 61
> 3 81
> 4 5
> osv...
>
> Feltet bliver som sagt opdateret hvert 10. sekund med et fortløbende ID og
> et nyt tilfældigt tal.
> Mit problem er så, at når brugerne/spilleren skal have hevet disse nye tal
> ud fra tabellen, at jeg så havde forestillet mig, at forespørge på tabellen
> hvert 5. sekund - men jeg kan udemærket godt selv se, at hvis alle brugere
> (lad os sige 20-50 brugere samtidigt) allesammen forespørger på tabellen
> hvert 5. sekund, at det vil give ret mange forespørgsler på databasen!?

Hvad består en forespørgsel i? Et opslag på evt. nye værdier a la

select * from tabel
where id > :id

?

Hvis tabellen er ordentligt indexeret, skal der *rigtig* mange
forespørgsler til, før dette bliver et problem. Som det ser ud nu, har
du 10 pr. sekund, hvilket ikke er noget at snakke om.

Hvorfor skal der i øvrigt forespørges hvert 5. sekund, når der kun
opdateres hvert 10. sekund?


--
Kristian Damm Jensen | Feed the hungry. Go to
kristian-damm.jensen@capgemini.dk | http://www.thehungersite.com


Dennis Helligsø (16-02-2001)
Kommentar
Fra : Dennis Helligsø


Dato : 16-02-01 13:06

> Hvad består en forespørgsel i? Et opslag på evt. nye værdier a la
> select * from tabel
> where id > :id

Det er to SQL statements:
SELECT MAX(field_num) AS max_field_num FROM bingo_numbers (bliver kaldt hver
gang)
SELECT field_num, number FROM bingo_numbers WHERE field_num = $field_num + 1
(bliver kaldt når der er kommet et nyt tal)

> Hvis tabellen er ordentligt indexeret, skal der *rigtig* mange
> forespørgsler til, før dette bliver et problem. Som det ser ud nu, har
> du 10 pr. sekund, hvilket ikke er noget at snakke om.

Hmm... så du mener ikke, at det vil give problemer selv ved mange samtidige
brugere (100, 200 eller 300)?

> Hvorfor skal der i øvrigt forespørges hvert 5. sekund, når der kun
> opdateres hvert 10. sekund?

For at få tallet "rimeligt" hurtigt efter det er udtrukket. Det burde nok
endda være mindre end 5 sek. (måske 2 eller 3).

--
Mvh.
Dennis



Kristian Damm Jensen (16-02-2001)
Kommentar
Fra : Kristian Damm Jensen


Dato : 16-02-01 14:58

"Dennis Helligsø" wrote:
>
> > Hvad består en forespørgsel i? Et opslag på evt. nye værdier a la
> > select * from tabel
> > where id > :id
>
> Det er to SQL statements:
> SELECT MAX(field_num) AS max_field_num FROM bingo_numbers (bliver kaldt hver
> gang)
> SELECT field_num, number FROM bingo_numbers WHERE field_num = $field_num + 1
> (bliver kaldt når der er kommet et nyt tal)
>
> > Hvis tabellen er ordentligt indexeret, skal der *rigtig* mange
> > forespørgsler til, før dette bliver et problem. Som det ser ud nu, har
> > du 10 pr. sekund, hvilket ikke er noget at snakke om.
>
> Hmm... så du mener ikke, at det vil give problemer selv ved mange samtidige
> brugere (100, 200 eller 300)?

Egentlig ikke. Men det kommer naturligvis an på konfigureringen af din
database og det ydeevnen af det underliggende hardware.

Men du kan speede det hele lidt op, ved at lave en tabel ekstra, der til
enhver tid indeholder det største nummer i bingo_numbers.

Det kræver en lidt mere kompliceret update, men betyder til gengæld at
den første af ovenstående kan forsimples til

select max_field_num from max_bingo_number

<snip>

--
Kristian Damm Jensen | Feed the hungry. Go to
kristian-damm.jensen@capgemini.dk | http://www.thehungersite.com


Christian Bjerre (18-02-2001)
Kommentar
Fra : Christian Bjerre


Dato : 18-02-01 00:10

burde kigge på postgresql, da mysql har den *feature* at den låser hele den
table man updater / inserter i indtil den er færdig.

/ chris



Morten Guldager (18-02-2001)
Kommentar
Fra : Morten Guldager


Dato : 18-02-01 07:34

On Sun, 18 Feb 2001 00:09:46 +0100, Christian Bjerre <c@frb.dk> wrote:
>burde kigge på postgresql, da mysql har den *feature* at den låser hele den
>table man updater / inserter i indtil den er færdig.

Og det bliver et problem hvis man har mange updates. Men
ham her (navn glemt) har vist mange selectes og så er mysql
nu ganske hurtig.



/Morten

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste