|
| Kvæler jeg min mySql-server? Fra : Jeppe Vesterbæk |
Dato : 07-05-02 18:42 |
|
Hvor mange insert-statements kan mySql klare hurtigt efter hinanden? Jeg er
ved at lave en simpel simulering over et trafikkryds i java. Blandt andet
bilers ankomsttider skal logges i en mySql-database, jeg har lavet. Skal der
f.eks. genereres 20 biler pr minut i hver retning og simuleringen skal
strække sig over 60 minutter, bliver dette til 20 x 4 x 60 = 4800 insert
statements lige efter hinanden.
Dette ser ud til at kvæle min mySql-server (kører lokalt på min computer).
Den når kun at indsætte onkring 2000 rækker. Det virker fint hvis jeg f.eks.
kun vælger at lade simuleringen strække sig over 1 minut (80 inserts).
Jeg får følgende fejl i java:
java.sql.SQLException: Cannot connect to MySQL server on localhost:3306. Is
there a MySQL server running on the machine/port you are trying to connect
to? (java.net.BindException)
Kvæler jeg min mySql-server? Hvis ja, hvad kan jeg gøre?
/Jeppe
X-POST til dk.edb.database og dk.edb.programmering.java da jeg ikke er helt
sikker på om problemet ligger i java-delen eller hos MySql
X-FUT: dk.edb.database
| |
Thorbjørn Ravn Ander~ (07-05-2002)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 07-05-02 18:44 |
|
"Jeppe Vesterbæk" <jeppeojeppe_ingenspamtak_@hotmail.com> writes:
> Dette ser ud til at kvæle min mySql-server (kører lokalt på min computer).
> Den når kun at indsætte onkring 2000 rækker. Det virker fint hvis jeg f.eks.
> kun vælger at lade simuleringen strække sig over 1 minut (80 inserts).
Husker du at lukke forbindelsen når du er færdig med den?
Overvej at brug connection pooling istedet - det er dog ikke så
vigtigt med MySQL da den er hurtig til at oprette forbindelser.
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn
| |
Jeppe Vesterbæk (07-05-2002)
| Kommentar Fra : Jeppe Vesterbæk |
Dato : 07-05-02 18:51 |
|
> Husker du at lukke forbindelsen når du er færdig med den?
Ja, men jeg har fundet ud af, at den måde jeg har lavet mit java sikkert er
ganske usmart. Jeg har lavet en klasse som styrer kontakten med databasen.
Problemet må være, at jeg for hvert kald til denne klasse (dvs. v. hver
sql-kommando) åbner og lukker for databaseforbindelsen. (Jeg er meget, meget
ny til java, så dette havde jeg ikke lige gennemskuet.)
/Jeppe
| |
Nis Jorgensen (07-05-2002)
| Kommentar Fra : Nis Jorgensen |
Dato : 07-05-02 19:15 |
|
On Tue, 7 May 2002 19:42:12 +0200, "Jeppe Vesterbæk"
<jeppeojeppe_ingenspamtak_@hotmail.com> wrote:
>Hvor mange insert-statements kan mySql klare hurtigt efter hinanden? Jeg er
>ved at lave en simpel simulering over et trafikkryds i java. Blandt andet
>bilers ankomsttider skal logges i en mySql-database, jeg har lavet. Skal der
>f.eks. genereres 20 biler pr minut i hver retning og simuleringen skal
>strække sig over 60 minutter, bliver dette til 20 x 4 x 60 = 4800 insert
>statements lige efter hinanden.
Kan du ikke noejes med een insert, som indsaetter 4800 raekker? Evt
kombineret med random-funktioner og/eller en tabel indeholdende de
foerste 10000 heltal.
--
Nis Jorgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Jeppe Vesterbæk (07-05-2002)
| Kommentar Fra : Jeppe Vesterbæk |
Dato : 07-05-02 19:43 |
|
> Kan du ikke noejes med een insert, som indsaetter 4800 raekker? Evt
> kombineret med random-funktioner og/eller en tabel indeholdende de
> foerste 10000 heltal.
Nej, de (bil-objekterne) bliver ikke dannet på samme tid. Der skal desuden
også indsættes andre store mængder (ex. afgangstid når bilen kører (anden
tabel)).
Jeg kan ikke umiddelbart finde ud af at åbne connection til databasen kun
når programmet startes og lukke til sidst. Havde det nu bare været asp/php,
så havde jeg bare inkluderet db_open i starten af hver fil og db_close i
slutningen .
/Jeppe
| |
Peter Brodersen (07-05-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 07-05-02 19:32 |
|
On Tue, 7 May 2002 19:42:12 +0200, "Jeppe Vesterbæk"
<jeppeojeppe_ingenspamtak_@hotmail.com> wrote:
>Hvor mange insert-statements kan mySql klare hurtigt efter hinanden?
Normalt "så mange, det skal være". En almindelig eksport til en
mysql-server består netop i at kaste en tekstfil med en større mængde
create/insert-statements efter hinanden.
Som du selv er inde på, lader det til at det er "åbn/luk
connection"-tingen, der er med til at belaste. Du kan evt. tjekke en
status på din mysql-server undervejs:
mysqladmin status
eller
mysqladmin extended-status
--
- Peter Brodersen
| |
Jeppe Vesterbæk (07-05-2002)
| Kommentar Fra : Jeppe Vesterbæk |
Dato : 07-05-02 19:40 |
|
> Som du selv er inde på, lader det til at det er "åbn/luk
> connection"-tingen, der er med til at belaste. Du kan evt. tjekke en
> status på din mysql-server undervejs:
>
> mysqladmin status
> eller
> mysqladmin extended-status
ja, den ryger op på et par tusinde.
/Jeppe
| |
Soren 'Disky' Reinke (07-05-2002)
| Kommentar Fra : Soren 'Disky' Reinke |
Dato : 07-05-02 19:54 |
|
"Jeppe Vesterbæk" <jeppeojeppe_ingenspamtak_@hotmail.com> wrote in message
news:ab93l0$e21$1@sunsite.dk...
> Hvor mange insert-statements kan mySql klare hurtigt efter hinanden? Jeg
er
> ved at lave en simpel simulering over et trafikkryds i java. Blandt andet
> bilers ankomsttider skal logges i en mySql-database, jeg har lavet. Skal
der
> f.eks. genereres 20 biler pr minut i hver retning og simuleringen skal
> strække sig over 60 minutter, bliver dette til 20 x 4 x 60 = 4800 insert
> statements lige efter hinanden.
>
> Dette ser ud til at kvæle min mySql-server (kører lokalt på min computer).
> Den når kun at indsætte onkring 2000 rækker. Det virker fint hvis jeg
f.eks.
> kun vælger at lade simuleringen strække sig over 1 minut (80 inserts).
>
> Jeg får følgende fejl i java:
> java.sql.SQLException: Cannot connect to MySQL server on localhost:3306.
Is
> there a MySQL server running on the machine/port you are trying to connect
> to? (java.net.BindException)
>
> Kvæler jeg min mySql-server? Hvis ja, hvad kan jeg gøre?
Bruger du connection pooling ? eller opretter og lukker du en connection
hver gang ?
Har du tunet mysql i din my.cnf fil ?
--
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
| |
Jeppe Vesterbæk (07-05-2002)
| Kommentar Fra : Jeppe Vesterbæk |
Dato : 07-05-02 20:24 |
|
> Bruger du connection pooling ? eller opretter og lukker du en connection
> hver gang ?
Jeg opretter og lukker hver gang. Ved ikke hvad pooling er.
> Har du tunet mysql i din my.cnf fil ?
Jeg ved ikke noget om denne config-fil, så nej.
/Jeppe
| |
Jeppe Vesterbæk (07-05-2002)
| Kommentar Fra : Jeppe Vesterbæk |
Dato : 07-05-02 21:14 |
|
> Bruger du connection pooling ? eller opretter og lukker du en connection
> hver gang ?
Jeg har nu læst omkring pooling her:
http://developer.java.sun.com/developer/onlineTraining/Programming/JDCBook/c
onpool.html#pool
Jeg må tilstå, at jeg ikke forstår det. Min java erfaring er kun 1 uge, så
jeg kan ikke det vilde endnu :)
I/du kan se hvad jeg har fået lavet indtil nu. Det virker hvis man sætter en
lille gennemløbstid (skaber ikke så mange connections). Da jeg selv har
lavet det meste fra bunden, er der sikkert nogle tåbelige kodelinier imellem
Se java-filerne er: http://www.but.auc.dk/~jhv38731/vejsystem/
/Jeppe
| |
-Martin- (07-05-2002)
| Kommentar Fra : -Martin- |
Dato : 07-05-02 22:12 |
|
On Tue, 7 May 2002 22:13:55 +0200, "Jeppe Vesterbæk"
<jeppeojeppe_ingenspamtak_@hotmail.com> wrote:
>> Bruger du connection pooling ? eller opretter og lukker du en connection
>> hver gang ?
>
>Jeg har nu læst omkring pooling her:
> http://developer.java.sun.com/developer/onlineTraining/Programming/JDCBook/c
>onpool.html#pool
>
>Jeg må tilstå, at jeg ikke forstår det. Min java erfaring er kun 1 uge, så
>jeg kan ikke det vilde endnu :)
>
>I/du kan se hvad jeg har fået lavet indtil nu. Det virker hvis man sætter en
>lille gennemløbstid (skaber ikke så mange connections). Da jeg selv har
>lavet det meste fra bunden, er der sikkert nogle tåbelige kodelinier imellem
>
>Se java-filerne er: http://www.but.auc.dk/~jhv38731/vejsystem/
Ikk fordi jeg ved en DYT om Java kun lidt mysql ... men slet ikk i
denne retning :)
Anyway .. kunne da VILDT godt tænke mig at se dit projekt ... tænke på
om det ikk kunne køres på webserveren ?
Så måtte du da gerne lave det da :)
| |
Tonni Aagesen (07-05-2002)
| Kommentar Fra : Tonni Aagesen |
Dato : 07-05-02 23:28 |
|
"Jeppe Vesterbæk" <jeppeojeppe_ingenspamtak_@hotmail.com> skrev i en
meddelelse news:ab93l0$e21$1@sunsite.dk...
> Dette ser ud til at kvæle min mySql-server (kører lokalt på min computer).
> Den når kun at indsætte onkring 2000 rækker. Det virker fint hvis jeg
f.eks.
> kun vælger at lade simuleringen strække sig over 1 minut (80 inserts).
>
> Jeg får følgende fejl i java:
> java.sql.SQLException: Cannot connect to MySQL server on localhost:3306.
Is
> there a MySQL server running on the machine/port you are trying to connect
> to? (java.net.BindException)
>
> Kvæler jeg min mySql-server? Hvis ja, hvad kan jeg gøre?
Bare en tanke... Connect'er du for hver query og "rydder" du ordentligt op?
--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>
| |
Jeppe Vesterbæk (08-05-2002)
| Kommentar Fra : Jeppe Vesterbæk |
Dato : 08-05-02 00:54 |
|
> Bare en tanke... Connect'er du for hver query og "rydder" du ordentligt
op?
Jeps, jeg rydde godt nok op efter mig, men jeg connectede for hver query.
Dette gav mange tusinde connects til min MySql database i løbet af få
sekunder. Det var her fejlen lå (nok en følge af, at jeg som skrevet før
knap har brugt java én uge).
Nu har jeg imidlertid ved at splitte det lidt op, dvs. en class til connect,
2 til query og 1 til at lukke. Jeg har brugte Sørens kode fra en tråd på
eksperten.dk ( http://www.eksperten.dk/spm/136550).
Mange tak for hjælpen til jer alle.
vh Jeppe
| |
Soeren Dalby (08-05-2002)
| Kommentar Fra : Soeren Dalby |
Dato : 08-05-02 21:57 |
|
Hej Jeppe,
Det lyder meget sært. Jeg kører et internetscanningsprogram, der typisk har
20 samtidige tråde, som benytter mySQL intensivt uden problemer. Hvis dit
program tilmed er enkelttrådet vil den næste insert jo først blive kaldt når
den foregående er afsluttet, så det giver under alle omstændigheder ingen
mening.
Har du checket om mySQL har diskplads nok og hvordan dens log ser ud ??
Prøv evt. at lave samme setup på en anden maskine. Det lyder ikke som et
problem i dit program.
--
Med venlig hilsen / best regards
Soeren Dalby
"Jeppe Vesterbæk" <jeppeojeppe_ingenspamtak_@hotmail.com> wrote in message
news:ab93l0$e21$1@sunsite.dk...
> Hvor mange insert-statements kan mySql klare hurtigt efter hinanden? Jeg
er
> ved at lave en simpel simulering over et trafikkryds i java. Blandt andet
> bilers ankomsttider skal logges i en mySql-database, jeg har lavet. Skal
der
> f.eks. genereres 20 biler pr minut i hver retning og simuleringen skal
> strække sig over 60 minutter, bliver dette til 20 x 4 x 60 = 4800 insert
> statements lige efter hinanden.
>
> Dette ser ud til at kvæle min mySql-server (kører lokalt på min computer).
> Den når kun at indsætte onkring 2000 rækker. Det virker fint hvis jeg
f.eks.
> kun vælger at lade simuleringen strække sig over 1 minut (80 inserts).
>
> Jeg får følgende fejl i java:
> java.sql.SQLException: Cannot connect to MySQL server on localhost:3306.
Is
> there a MySQL server running on the machine/port you are trying to connect
> to? (java.net.BindException)
>
> Kvæler jeg min mySql-server? Hvis ja, hvad kan jeg gøre?
>
> /Jeppe
>
> X-POST til dk.edb.database og dk.edb.programmering.java da jeg ikke er
helt
> sikker på om problemet ligger i java-delen eller hos MySql
> X-FUT: dk.edb.database
>
>
| |
|
|