/ 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 - Hvordan får jeg den til at sluge m~
Fra : Nicolai


Dato : 27-07-04 19:11

På en server med 2gb ram sluger den kun 256mb - til gengæld knokler diskene...

Hvordan får jeg MySQL til at sluge hvad der er af ram?

--

/Nicolai



 
 
Bent Stigsen (27-07-2004)
Kommentar
Fra : Bent Stigsen


Dato : 27-07-04 21:58

Nicolai wrote:
> På en server med 2gb ram sluger den kun 256mb - til gengæld knokler diskene...
>
> Hvordan får jeg MySQL til at sluge hvad der er af ram?
>
> --
>
> /Nicolai
>
>

Ved at ændre på buffer-størrelserne i "my.ini"

læs her:
http://dev.mysql.com/doc/mysql/en/Server_parameters.html

Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.

Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
regne lidt på det.

/Bent

Kim Emax (28-07-2004)
Kommentar
Fra : Kim Emax


Dato : 28-07-04 00:11

Bent Stigsen wrote:

> Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på
> dine tabeller/indexes og sikkert nogle typiske forespørgsler, og
> derefter nok regne lidt på det.

Explain er din ven:

EXPLAIN SELECT * FROM tabel1, tabel2 WHERE tabel1.id=tabel2.tabel_id AND
noget='noget andet';

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Nicolai (28-07-2004)
Kommentar
Fra : Nicolai


Dato : 28-07-04 07:58

> Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.
De stod til 256M - har ændret til 1024M og genstartet servicen.

Burde det være nok? :)

> Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
> tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
> regne lidt på det.

Helt optimalt ja ;)

Foreløbig tak!



Jesper Krogh (28-07-2004)
Kommentar
Fra : Jesper Krogh


Dato : 28-07-04 08:03

I dk.edb.database, skrev Nicolai:
> > Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.
> De stod til 256M - har ændret til 1024M og genstartet servicen.
>
> Burde det være nok? :)

Hold øje med om den giver sig til at swappe, så er det for meget.

Ellers vil jeg sige at du jo kan teste dig ud af det. Hvis den kører på
Linux, så benyttes det resterende af din ram alligevel som diskcache, så
derved er det ikke gået tabt selvom det ikke er forbrugt af mysql.

--
../Jesper Krogh, jesper@krogh.cc
Jabber ID: jesper@jabbernet.dk


Nicolai (28-07-2004)
Kommentar
Fra : Nicolai


Dato : 28-07-04 09:01

> Hold øje med om den giver sig til at swappe, så er det for meget.
Of course :)

> Ellers vil jeg sige at du jo kan teste dig ud af det. Hvis den kører på
> Linux, så benyttes det resterende af din ram alligevel som diskcache, så
> derved er det ikke gået tabt selvom det ikke er forbrugt af mysql.

2k3 :)



Bent Stigsen (28-07-2004)
Kommentar
Fra : Bent Stigsen


Dato : 28-07-04 11:11

Nicolai wrote:

>>Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.
>
> De stod til 256M - har ændret til 1024M og genstartet servicen.
>
> Burde det være nok? :)

ahem :), måske endda i overkanten, men uden at vide hvad du sider med,
er det umuligt at sige.
Som Jesper også pointerer, pas på du ikke udsulter resten af systemet.
Eller i det hele taget bare allokerer ram til intet foremål.

Et gæt: Tror ikke du behøver sætte sort_buffer *så* højt.


>>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
>>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
>>regne lidt på det.
>
> Helt optimalt ja ;)

ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
billigere end konsulenttimerne.


/Bent

Nicolai (28-07-2004)
Kommentar
Fra : Nicolai


Dato : 28-07-04 11:46

> ahem :), måske endda i overkanten, men uden at vide hvad du sider med,
> er det umuligt at sige.
> Som Jesper også pointerer, pas på du ikke udsulter resten af systemet.
> Eller i det hele taget bare allokerer ram til intet foremål.
Lige nu bruger den under 50% - det kan sql'eb ligesågodt bruge :)

> >>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
> >>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
> >>regne lidt på det.
> >
> > Helt optimalt ja ;)
>
> ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
> billigere end konsulenttimerne.

Netop ;)



Nicolai (04-08-2004)
Kommentar
Fra : Nicolai


Dato : 04-08-04 13:19

> Et gæt: Tror ikke du behøver sætte sort_buffer *så* højt.
Den ændrer intet - stadig 1gb ram ledig :(

> >>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
> >>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
> >>regne lidt på det.
> >
> > Helt optimalt ja ;)
>
> ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
> billigere end konsulenttimerne.

Men den bruger det ikke - what to do?



Nikolaj Hansen (04-08-2004)
Kommentar
Fra : Nikolaj Hansen


Dato : 04-08-04 14:00

>
> Men den bruger det ikke - what to do?

Mit bedste bud, som Oracle og PostgresSQL bruger er, at din distro af
mysql er compilet med nogle default max værdier til div. cache størrelser.

Disse vil den så bruge med mindre du specifikt siger til databasen, at
den må bruge mere memory. Se evt. her:

http://gnu.kookel.org/ftp/mysql/doc/mysql/en/Server_parameters.html

Hvis du er rigtig uheldig er de 256 mbyte mem sat op til at være max og
du kan ikke tvinge databasen til at bruge mere mem. Så må du i gang med
selv at bygge mysql med de compile parametre, der passer sig til din
servers hardware.

Eller finde en anden udgave af den binære kode, hvor der er en der har
gjort det for dig.

- Nico

Nicolai (04-08-2004)
Kommentar
Fra : Nicolai


Dato : 04-08-04 23:28
Nicolai (05-08-2004)
Kommentar
Fra : Nicolai


Dato : 05-08-04 00:02

> Fandt denne:
>
> http://gnu.kookel.org/ftp/mysql/doc/mysql/en/Memory_use.html

Desværre sluger den kun swapfile og ikke ram - fatter minus.



Nikolaj Hansen (05-08-2004)
Kommentar
Fra : Nikolaj Hansen


Dato : 05-08-04 11:55

> Desværre sluger den kun swapfile og ikke ram - fatter minus.

Jeg forstod det var en windows server?

Gælder det kun for dbms systemet, eller er det for andre programmer, du
starter på maskinen.

Fejlen kunne vel også ligge i en opsætning til windows?

Dvs. at den søger at swappe store processer ud så meget som muligt, for
at holde så meget ledig mem som muligt?

- Nikolaj

Nicolai (05-08-2004)
Kommentar
Fra : Nicolai


Dato : 05-08-04 12:26

> Gælder det kun for dbms systemet, eller er det for andre programmer, du
> starter på maskinen.
Der kører ikke så meget andet :)

> Fejlen kunne vel også ligge i en opsætning til windows?
Næppe :)




Bent Stigsen (04-08-2004)
Kommentar
Fra : Bent Stigsen


Dato : 04-08-04 14:09

Nicolai wrote:
>>Et gæt: Tror ikke du behøver sætte sort_buffer *så* højt.
>
> Den ændrer intet - stadig 1gb ram ledig :(

Har noget som helst du har ændret haft nogen effekt.
(læs: check at den ini-fil du piller i, også er den mysql bruger)


>>>>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
>>>>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
>>>>regne lidt på det.
>>>
>>>Helt optimalt ja ;)
>>
>>ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
>>billigere end konsulenttimerne.
>
>
> Men den bruger det ikke - what to do?

hmm, det er godt nok ikke noget jeg har rodet forfærdelig meget med.

Hvordan ser din my.ini ud.
Hvilken motor kører du med på dine tabeller (InnoDB, MyISAM, ...)


/Bent

Nicolai (04-08-2004)
Kommentar
Fra : Nicolai


Dato : 04-08-04 14:48

> Har noget som helst du har ændret haft nogen effekt.
> (læs: check at den ini-fil du piller i, også er den mysql bruger)
Hmm - finder kun 1 my.ini

(sorry, er mildt sagt ikke databasemand...)

> hmm, det er godt nok ikke noget jeg har rodet forfærdelig meget med.
>
> Hvordan ser din my.ini ud.

[mysqld]
basedir=C:/mysql
#bind-address=*
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=*
#set-variable=key_buffer=256M
skip-locking
skip-innodb
query_cache_limit=32M
query_cache_size=512M
query_cache_type=1
max_connections=500
interactive_timeout=100
wait_timeout=100
connect_timeout=10
thread_cache_size=256
key_buffer=150M
join_buffer=2M
max_allowed_packet=16M
table_cache=1500
record_buffer=128M
sort_buffer_size=128M
read_buffer_size=128M
max_connect_errors=10
thread_concurrency=4
myisam_sort_buffer_size=512M
log-bin
server-id=1
log-slow-queries = c:\mysql\data\slowqueries.log
long_query_time=1

[myisamchk]
key_buffer = 1024M
sort_buffer = 1024M
read_buffer = 1024M
write_buffer = 1024M

[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user= *
password= *



Har netop genstartet servicen med disse parametre.



Bent Stigsen (04-08-2004)
Kommentar
Fra : Bent Stigsen


Dato : 04-08-04 17:33

Nicolai wrote:

> [mysqld]

til en begyndelse prøv med:

key_buffer=700M
record_buffer=2M
sort_buffer_size=400M
read_buffer_size=2M

I min bruger jeg godt nok navnene sort_buffer og read_buffer, men det er
vist ligemeget.

Prøvede lige på min egen, og den lader ikke til at bruge det der står
under "[myisamchk]". Har ikke lige kunnet finde det på mysql.org. Det er
muligvis bare maxværdier hvis man kører med flere database engines.

Nogle af værdierne er per request. (fx. read_buffer) Så dem bør du ikke
sætte så højt.

/Bent

Nicolai (04-08-2004)
Kommentar
Fra : Nicolai


Dato : 04-08-04 19:48

> til en begyndelse prøv med:
>
> key_buffer=700M
> record_buffer=2M
> sort_buffer_size=400M
> read_buffer_size=2M

retter og genstarter mysql - vender tilbage om et døgn eller 2 :)

På forhånd mange tak.



Nicolai (04-08-2004)
Kommentar
Fra : Nicolai


Dato : 04-08-04 23:02

> > key_buffer=700M
> > record_buffer=2M
> > sort_buffer_size=400M
> > read_buffer_size=2M
>
> retter og genstarter mysql - vender tilbage om et døgn eller 2 :)

Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(

1.3GB ledig ram... 1,63gb swapfile usage...



Nicolai (04-08-2004)
Kommentar
Fra : Nicolai


Dato : 04-08-04 23:02

> Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
>
> 1.3GB ledig ram... 1,63gb swapfile usage...

MySql sluger med det samme ca 1,2gb swapfile ved stop og start - så noget virker (dog skidt)



Bent Stigsen (05-08-2004)
Kommentar
Fra : Bent Stigsen


Dato : 05-08-04 00:40

Nicolai wrote:
>>>key_buffer=700M
>>>record_buffer=2M
>>>sort_buffer_size=400M
>>>read_buffer_size=2M
>>
>>retter og genstarter mysql - vender tilbage om et døgn eller 2 :)
>
>
> Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
>
> 1.3GB ledig ram... 1,63gb swapfile usage...

Skummelt.

prøv kommenter så meget som muligt ud i my.ini, så der kun er et minimum
tilbage, noget ala:
---
[mysqld]
basedir=C:/mysql
datadir=C:/mysql/data
skip-innodb
skip-locking
---

Start servicen. Se hvad der sker.
Derefter tilføj key_buffer alene og skru den op.

/Bent

Nicolai (05-08-2004)
Kommentar
Fra : Nicolai


Dato : 05-08-04 16:09

> > Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
> >
> > 1.3GB ledig ram... 1,63gb swapfile usage...
>
> Skummelt.
>
> prøv kommenter så meget som muligt ud i my.ini, så der kun er et minimum
> tilbage, noget ala:
> ---
> [mysqld]
> basedir=C:/mysql
> datadir=C:/mysql/data
> skip-innodb
> skip-locking
> ---
>
> Start servicen. Se hvad der sker.
> Derefter tilføj key_buffer alene og skru den op.

Done - uden keybuffer bruger den hverken ram eller awap (det kan måske komme) - med key buffer sluger den bufferens mængde
til swapfile... IKKE rammen...

Skod...

What to do?



Bent Stigsen (06-08-2004)
Kommentar
Fra : Bent Stigsen


Dato : 06-08-04 00:12

Nicolai wrote:
>>>Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
>>>
>>>1.3GB ledig ram... 1,63gb swapfile usage...
>>
>>Skummelt.
>>
>>prøv kommenter så meget som muligt ud i my.ini, så der kun er et minimum
>>tilbage, noget ala:
>>---
>>[mysqld]
>>basedir=C:/mysql
>>datadir=C:/mysql/data
>>skip-innodb
>>skip-locking
>>---
>>
>>Start servicen. Se hvad der sker.
>>Derefter tilføj key_buffer alene og skru den op.
>
>
> Done - uden keybuffer bruger den hverken ram eller awap (det kan måske komme) - med key buffer sluger den bufferens mængde
> til swapfile... IKKE rammen...

Son of a B....

Det kan være Nikolaj Hansen har fat i noget.
Check hellere om der nu skulle være nogle besynderlige options.
-->[Included with 2003 is a new tool called "Performance Options." It
consolidates processor, memory, and virtual memory settings to make it
easier to configure your server for optimum performance.]

Og mens vi har fat i windows "features", mon en genstart vil gøre
underværker, det er hørt før.


Hvilken MySQL version kører du med?

Jeg bruger ikke min til noget seriøst i øjeblikket, så jeg har ikke
noget imod at prøve en anden af.
Bare for at kunne udelukke mysql, selvom jeg ikke tror på mysql er
problemet. Jeg har selv en Mysql 4.0.18 på en XP'er, og en 3.23.58 på en
mishandlet Linux. De opfører sig begge meget pænt. Kan også øge deres
resourcer uden det hele tilt'er. Desuden burde allokering af fysisk
hukommelse og paging være transparent for applikationer, og ikke noget
de kan kontrollere på den måde med at allokere hukommelse der er page't
ud på swap fra start af.


/Bent

Nicolai (06-08-2004)
Kommentar
Fra : Nicolai


Dato : 06-08-04 00:33


> Son of a B....
Hehe enig ;)

> Det kan være Nikolaj Hansen har fat i noget.
> Check hellere om der nu skulle være nogle besynderlige options.
> -->[Included with 2003 is a new tool called "Performance Options." It
> consolidates processor, memory, and virtual memory settings to make it
> easier to configure your server for optimum performance.]
>
> Og mens vi har fat i windows "features", mon en genstart vil gøre
> underværker, det er hørt før.
Enig - performance options er også rettet - måske den ikke kan lide system cache settingen?

> Hvilken MySQL version kører du med?
4.0.20a

> Jeg bruger ikke min til noget seriøst i øjeblikket, så jeg har ikke
> noget imod at prøve en anden af.
Nice.

> Bare for at kunne udelukke mysql, selvom jeg ikke tror på mysql er
> problemet. Jeg har selv en Mysql 4.0.18 på en XP'er, og en 3.23.58 på en
> mishandlet Linux. De opfører sig begge meget pænt. Kan også øge deres
> resourcer uden det hele tilt'er. Desuden burde allokering af fysisk
> hukommelse og paging være transparent for applikationer, og ikke noget
> de kan kontrollere på den måde med at allokere hukommelse der er page't
> ud på swap fra start af.

Netop. Lige nu bruger mysql 96mb - mod 32mb da jeg genstartede servicen for en times tid siden - så vi er lidt på sporet.

my.ini ser netop nu således ud:

[mysqld]
basedir=C:/mysql
#bind-address=*
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=256M
skip-locking
skip-innodb
key_buffer=256M
record_buffer=4M
sort_buffer_size=1024M
read_buffer_size=256M
query_cache_limit=1024M
query_cache_size=256M


Skal du ikke i seng? ;)



Søg
Reklame
Statistik
Spørgsmål : 177460
Tips : 31964
Nyheder : 719565
Indlæg : 6408201
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste